\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{ragami} \pdfinfo{ /Title (ruby-cheat-sheet.pdf) /Creator (Cheatography) /Author (ragami) /Subject (Ruby Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{BC91C9} \definecolor{LightBackground}{HTML}{F6F1F8} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Ruby Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{ragami} via \textcolor{DarkBackground}{\uline{cheatography.com/181906/cs/37821/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}ragami \\ \uline{cheatography.com/ragami} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 21st March, 2023.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{How to print something out on the screen}} \tn % Row 0 \SetRowColor{LightBackground} You can use "print". For e.g., print "Hello World" & You can use "puts". For e.g., puts "Hello World" \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} When you use print, everything gets printed out on the same line & When you use puts, everything gets printed out on a new line \tn % Row Count 7 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Variables}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Let's say we want to print out the message: \newline I am 18 years old. I like ice skating. I went ice skating for the first time when I was 18. \newline You can create variables: \newline character\_age = "18" \newline character\_sport = "ice skating" \newline \newline To print this message, write: \newline \newline character\_age = "18" \newline character\_sport = "ice skating" \newline puts ("I am " + character\_age + " years old.") \newline puts ("I like " + character\_sport) \newline puts ("I went " + character\_sport + " for the first time when I was " + character\_age) \newline \newline You can also modify the message half way: \newline \newline character\_age = "18" \newline character\_sport = "ice skating" \newline puts ("I am " + character\_age + " years old.") \newline puts ("I like " + character\_sport) \newline character\_sport = "cycling" \newline puts ("I went " + character\_sport + " for the first time when I was " + character\_age) \newline \newline It will output: \newline I am 18 years old. I like ice skating. I went cycling for the first time when I was 18.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Data Types}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{String/Text \newline name = "Mike" \newline \newline Integer (A full number) \newline age = 18. Note that you do not need to include quotations. \newline \newline Floating Point (A number that has a decimal) \newline number = 18.9 \newline \newline Boolean (on/off, true/false, 1/0) \newline isfemale = true \newline \newline Nil (referring to "nothing". Absence of a value) \newline flaws = nil} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{What does .close() do?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{def \seqsplit{write\_data\_to\_file(file\_name)} \newline a\_file.puts('5') \newline a\_file.puts('Fred') \newline a\_file.puts('Sam') \newline a\_file.puts('Jill') \newline a\_file.puts('Jenny') \newline a\_file.puts('Zorro') \newline a\_file.close() \newline end} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{The close() is an inbuilt function in Ruby. \newline \newline Parameters: The function does not takes any element. \newline Return Value: It closes the queue and does not returns anything.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Arrays}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{friends = Array{[}"Kevin", "Karen", "Oscar"{]} \newline puts friends{[}-2{]} \newline \newline It will output: Karen \newline \newline \newline If you want to select names from index 0 - 2: \newline \newline friends = Array{[}"Kevin", "Karen", "Oscar"{]} \newline puts friends{[}0, 2{]} \newline \newline It will output: Kevin, Karen. Note that is does \newline not include Oscar.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Typing input into the terminal}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{puts "Enter your name: " \newline name = gets.chomp() \newline puts "Enter your age: " \newline age = gets.chomp() \newline puts ("Hello " + name + ", you are" + age + " years old")} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{What does gets.chomp do?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{puts "Enter your name" \newline name = gets \newline puts ("Hello " + name + " , you are cool!") \newline \newline "gets" alone will put ", you are cool!" on a new line. \newline To mitigate this, we use gets.chomp to ensure that \newline "Hello " + name + " , you are cool!" is on one line.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to print a new line?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{print "Hello\textbackslash{}n World" \newline \newline It will output: \newline Hello \newline World} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{What is Array.new?}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{friends = Array.new \newline \newline Here we're basically telling Ruby that we want \newline friends to be an array but we don't want to put \newline any new values into it just yet \newline \newline friends{[}0{]} = "Molly" \newline \newline puts friends{[}0{]}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Calculating age when inputting year of birth}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{require 'date' \newline \newline def hello() \newline \newline puts("what year were you born?") \newline year\_born = gets.chomp() \newline age = Date.today.year - year\_born.to\_i() - 1 \newline puts("So you are " + age.to\_s + " years old") \newline end \newline \newline def \newline main() \newline hello() \newline end \newline \newline main()} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to print out a quotation mark in a string}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{puts "Giraffe\textbackslash{}" Academy"} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{It will output: Giraffe" Academy} \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to delete extra trailing and whitespace?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{phrase = " Giraffe Academy " \newline puts phrase.strip() \newline \newline It will output "Giraffe Academy"} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to calculate the length of a string?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{phrase = "Giraffe Academy" \newline puts phrase.length() \newline \newline It will output: 15} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to get a range of text?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{phrase = "Giraffe Academy" \newline puts phrase{[}0,3{]} \newline \newline It will output: Gir} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to find the index position of a string}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{phrase = "Giraffe Academy" \newline puts phrase.index("ffe") \newline \newline It will output the index position it starts at: 4} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{How to make a string uppercase/lowercase?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{phrase = "Giraffe Academy" \newline puts phrase.upcase() \newline puts phrase.downcase() \newline \newline It will output: \newline GIRAFFE ACADEMY \newline giraffe academy} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{What is a class?}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{class Book \newline attr\_accessor :title, :author, :pages \newline end \newline \newline book1 = Book.new() \newline book1.title = "Harry Potter" \newline book1.author = "JK Rowling" \newline book1.pages = 400 \newline \newline puts book1} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{This class is a template or blueprint for representing a Book inside of the program. \newline Essentially it's like creating your own Data Type.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}