Code Breaker

Switching back and forth between programming languages sometimes causes me to break my own code. This cheat sheet will hopefully help prevent that.

Kind Javascript Jekyll Liquid Python Ruby
Comment /* hello there */
// also hi
{% comment %}
hello there
{% endcomment %}
# hello there # hello there
Lowercase 'ABC'.toLowerCase() {{ 'ABC' | downcase }} 'ABC'.lower() 'ABC'.downcase
Uppercase 'abc'.toUpperCase() {{ 'abc' | upcase }} 'abc'.upper() 'abc'.upcase
String String(2001)
2001 + ''
2001.toString()
{{ 2001 | downcase }} str(2001) 2001.to_s
Integer Number('2001')
'2001' * 1
parseInt('2001',10)
{{ '2001' | plus: 0 }}
{{ '2001' | times: 1 }}
int('2001') '2001'.to_i
Array ['a','b','c'] {{ 'a,b,c' | split: ',' }} ['a','b','c'] ['a','b','c']
Push x = ['a','b','c']
x.push('d')
{% assign x = 'a,b,c' | split: ',' %}
{% assign y = 'd' | split: ',' %}
{% assign xy = x | concat: y %}
x = ['a','b','c']
x.append('d')
x = ['a','b','c']
x.push('d')
Length 'abc'.length
['a','b','c'].length
{{ 'abc' | size }}
{{ 'a,b,c' | split:',' | size }}
len('abc')
len(['a','b','c'])
'abc'.length
['a','b','c'].length
Substring 'abcdef'.includes('cd') {{ 'abcdef' contains 'cd' }} 'cd' in 'abcdef' 'abcdef'.include? 'cd'
Conditional if (_____) {
    ...
} else if (_____) {
    ...
} else {
    ...
}
{% if _____ %}
    ...
{% elsif _____ %}
    ...
{% else %}
    ...
{% endif %}
if _____:
    ...
elif _____:
    ...
else:
    ...
if _____
    ...
elsif _____
    ...
else
    ...
end

Python

Run Python shell

# Alphabetize array
jumbled.sort()

# Copy files
shutil.copy('/path/of/*.txt', '/path/of/dest/')

# Check for attribute
if slug in yyyy and 'imdb' in yyyy[slug]:
	imdb = yyyy[slug]['imdb']

# Check for starts with
if bible.startswith('In the beginning'):
	print(bible)

# Concat strings 1
var1 = "foo"
var2 = "bar"
var3 = var1 + var2

# Concat strings 2
"%s:%d" % (str1, num2)

# Convert array to string
', '.join(['a','b','c'])

# Date formats borrowed from strftime.org
%a  Mon        Weekday as locale’s abbreviated name.
%A  Monday     Weekday as locale’s full name.
%d  30         Day of the month as a zero-padded decimal number.
%-d 30         Day of the month as a decimal number.
%b  Sep        Month as locale’s abbreviated name.
%B  September  Month as locale’s full name.
%m  09         Month as a zero-padded decimal number.
%-m 9          Month as a decimal number. (Platform specific)
%y  13         Year without century as a zero-padded decimal number.
%Y  2013       Year with century as a decimal number.

# Filter out non-alpha-numeric characters
import re
regex = re.compile('[^a-zA-Z0-9]')
regex.sub('', 'a.b!c@d#e$f%g')

# Find type of variable
type('abc')
type('abc') is str
type(0)
type(0) is int
type(['a','b','c'])
type(['a','b','c']) is list
type({'a','b','c'})
type({'a','b','c'}) is dict

# Get files in a directory
files = os.listdir('../_data/')
for file in files:
	print(file)

# Get file size
mysize = os.stat('/path/of/file.txt').st_size

# Limit a loop
for count, item in enumerate(items, start=1):
	print(count, item)

# Read/Write date
when = str(my_date)
dayy = datetime.strptime(when, '%Y-%m-%d')
print(dayy.strftime('%A, %B %d, %Y'))

# Read from simple file into a variable
with open('data.txt', 'r') as myfile:
	data = myfile.read()

# Read from YAML file (like Jekyll front matter)
import yaml
with open('../path/whatever.yml', 'r') as stream:
	try:
		yyyy = yaml.load(stream)
	except yaml.YAMLError as exc:
		print(exc)

# Reference script name
import os
print(os.path.basename(__file__))

# Replace string
'Hello world'.replace('world', 'sailor')

# Remove parenthetical text in a string
mystr = 'Wonder Woman (Diana) and Superman (Clark)'
mystr = re.sub(r' \(.+?\)', '', mystr)

# Replace last occurance of substring
def rreplace(s, old, new, occurrence):
	li = s.rsplit(old, occurrence)
	return new.join(li)
rreplace('abcdcdcd', 'c', 'C', 1)

# Split a URL
'//www.website.com/page/99/'.split('/')[4]

# Stop
import sys
sys.exit("Error message")

# Truncate a string (abc)
mystr = 'abcdef'
print(mystr[:3])

# Truncate a string at the beginning (def)
mystr = 'abcdef'
print(mystr[3:])

# Try/Catch Exceptions
try:
	mynum = 1/0
except ZeroDivisionError:
	print('No dividing by zero!')
	raise

# Waiting ...
for i in range(10):
	sys.stdout.write('.')
print

# Write to file
w_file = '../path/%s' % (filename)
with open(w_file, 'w') as f:
	f.write('---\n')
	f.write('title: "%s"\n' % (title))
	f.write('---\n')
	f.write('Blah blah blah.'))
	f.close()

# Python UnicodeEncodeError: 'ascii' codec can't encode character in position X: ordinal not in range(128)
myvar = myvar.encode('ascii', 'ignore')
# or
myvar = myvar.encode('utf-8')

Ruby

Run Ruby shell

# Replace string
mytext.gsub! 'this', 'that'

# Write to console
puts "Hello world"

Jekyll Liquid


{% comment %} Format date: Fri, Mar 11, 2016. {% endcomment %}
{{ article.published_at | date: '%a, %b %d, %Y' }}

{% comment %} Format date: November 5, 1955. {% endcomment %}
{{ article.published_at | date: '%B %d, %Y' }}

{% comment %} Loop on list {% endcomment %}
{% assign sytes = 'biog,imdb,rott,tcmm,wiki' | split: ',' %}
{% for syte in sytes %}
{% endfor %}

{% comment %} Show the first character in a string. // a {% endcomment %}
{{ "a-to-z" | slice: 0 }}

{% comment %} Show a range of characters in a string. // -to- {% endcomment %}
{{ "a-to-z" | slice: 1, 4 }}

{% comment %} Show the last character in a string. // f {% endcomment %}
{{ "a-to-z" | slice: -1 }}

{% comment %} Sorting {% endcomment %}
{{ page.tags | sort }}
{{ site.posts | sort: 'author' }}
{{ site.pages | sort: 'title', 'last' }}

{% comment %} Truncate {% endcomment %}
{{ page.desc | truncate: 10 }}
{{ page.desc | truncate: 10,'(more)' }}
{{ page.desc | truncate: 10,'' }}

Javascript

Run Javascript shell

// Try/catch
try {
	some.thing = 'stupid';
}
catch(err) {
	console.log('You did something stupid.');
}

Regular Expressions

regextester.com | regular-expressions.info


# Find Hulk, but not Hulk Hogan.
\bHulk\b(?! Hogan)

# Find lots of hyphens.
-+

# Find HTML tags.
<[^<]+?>

Other

Character References

unicodelookup.com | W3 Char Ref

Link Examples

#fff #ccc #999 #888 #666 #111
none none none none none none
askw askw askw askw askw askw
askw bold askw bold askw bold askw bold askw bold askw bold
askw odrk askw odrk askw odrk askw odrk askw odrk askw odrk
askw odrk bold askw odrk bold askw odrk bold askw odrk bold askw odrk bold askw odrk bold
revs revs revs revs revs revs
revs bold revs bold revs bold revs bold revs bold revs bold
text text text text text text
Do you have a question about any of this stuff? Ask me.