Skip to content

Instantly share code, notes, and snippets.

@Serlych
Forked from maticrivo/epub.css
Last active November 25, 2020 13:03
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Serlych/7df8c3b02b6ce53ca0a8361756fe2f13 to your computer and use it in GitHub Desktop.
Save Serlych/7df8c3b02b6ce53ca0a8361756fe2f13 to your computer and use it in GitHub Desktop.
You Don't Know JS Ebooks
body {
text-align: justify;
}
code, pre {
font-family: "Hack", monospace;
}
h1, h2, h3, h4, h5, h6 {
text-align: left;
}
pre {
/* Don't make it too dark or it will be harder to read on e-ink devices */
background-color: #f5f5f5;
border-radius: 3px;
font-size: 0.85em;
padding: 10px;
text-align: left;
/* Wrap the text of pre sections */
white-space: pre-wrap;
}
@font-face {
font-family: "Hack";
src: url(Hack-Regular.ttf) format("truetype");
}
# make sure brew and brew cask are installed
if [ -z "$(which brew)" ]; then
echo 'Brew not found. Installing it now'
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
if [ -z "$(which brew cask)" ]; then
echo 'Brew cask not found. Installling it now.'
brew tap caskroom/cask
fi
brew install gnu-sed pandoc wget
brew cask install homebrew/cask-fonts/font-hack
git clone https://github.com/getify/You-Dont-Know-JS.git
wget -O You-Dont-Know-JS/epub.css https://gist.githubusercontent.com/maticrivo/8a2b2845df5081232814b91360ded097/raw/86b62ad3843fa038111021abe2cd16335297eb7f/epub.css
cd You-Dont-Know-JS
# Clean up redundant headings that end up getting split into separate chapters by themselves
find . -iname "*.md" -exec sed -E -i '' -e '/# You Don'\''t Know JS.*/d' {} \;
# Fix <br> tags which pandoc won't convert to <br />
find . -iname "*.md" -exec sed -E -i '' -e 's#<br>#<br />#' {} \;
# Close img tags
find . -iname "*.md" -exec sed -E -i -r 's#(<img.*[^/])>#\1 />#' {} \;
cd up\ \&\ going
# --no-highlight is used because syntax highlighting can make reading more difficult on e-ink devices
pandoc -f markdown+smart -o ../"You Don't Know JS: Up & Going.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: Up and Going" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
apA.md
cd ..
cd scope\ \&\ closures
wget -O foreword.html https://shanehudson.net/2014/06/03/foreword-dont-know-js/
pandoc -f html -t gfm foreword.html -o foreword.md
pandoc -f markdown+smart -o ../"You Don't Know JS: Scope & Closures.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: Scope and Closures" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
ch4.md \
ch5.md \
apA.md \
apB.md \
apC.md \
apD.md
cd ..
cd this\ \&\ object\ prototypes
pandoc -f markdown+smart -o ../"You Don't Know JS: this & Object Prototypes.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: this and Object Prototypes" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
ch4.md \
ch5.md \
ch6.md \
apA.md \
apB.md
cd ..
cd types\ \&\ grammar
pandoc -f markdown+smart -o ../"You Don't Know JS: Types and Grammar.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: Types & Grammar" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
ch4.md \
ch5.md \
apA.md \
apB.md
cd ..
cd async\ \&\ performance
pandoc -f markdown+smart -o ../"You Don't Know JS: Async & Performance.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: Async and Performance" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
ch4.md \
ch5.md \
ch6.md \
apA.md \
apB.md \
apC.md
cd ..
cd es6\ \&\ beyond
pandoc -f markdown+smart -o ../"You Don't Know JS: ES6 & Beyond.epub" \
--epub-cover-image=cover.jpg \
--epub-embed-font=$HOME/Library/Fonts/Hack-Regular.ttf \
--css=../epub.css \
-M author="Kyle Simpson" \
-M title="You Don't Know JS: ES6 and Beyond" \
foreword.md \
../preface.md \
ch1.md \
ch2.md \
ch3.md \
ch4.md \
ch5.md \
ch6.md \
ch7.md \
ch8.md \
apA.md
cd ..
@NessDan
Copy link

NessDan commented Jan 28, 2019

Worked flawlessly for me on macOS Mojave 10.14.2

@ianwelerson
Copy link

For anyone in 2020, Getify is creating the second edition of YDKJS, so the main branch now is the new version and the script do not work properly.

To solve the problema you need to change the line 15 to git clone -b 1st-ed --single-branch git@github.com:getify/You-Dont-Know-JS.git

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment