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
Do you have a question about any of this stuff? Ask me.