| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
I used to have Google Analytics installed which proved my ownership, but
since I removed it in 01b3805, I need to prove it in another way, and
adding a file that no visitor will notice is the least intrusive.
|
|
|
|
|
|
|
|
|
|
|
| |
Previously exclude_list is a list of relative paths, and it is hard to
deal with "./" resulted from joining an empty root with a name, thus
exclude list items in the root directory (e.g., ./template.html) aren't
really excluded. Not to mention the awkward trailing slash handling, and
other resolution issues (mainly ..).
In this commit we switch to an absolute exclude_list, eliminating the
aforementioned bug and simplifing exclude_list queries.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This almost always happens when I gendeploy: gen asks me to touch the
new post which I agree, but then the project root is dirty and I'm
greeted with the continue or not prompt, at which point I have no choice
but to open a new shell (or ^Z suspend the current job) to commit the
changes.
This commit allows to open an interactive shell in place when project
root is found to be dirty when deploying, which nicely solves the issue.
Closes #10.
|
| |
|
|
|
|
|
|
|
|
|
| |
The lonely templates/template.html finally finds it home in the cozy
source/, where it rightfully belongs, without the need to worry about
being exposed to the world in build/ ;)
The full fontello distribution I downloaded (and unpacked) from
fontello.com is now in source/fonts/fontello.
|
|
|
|
|
| |
Controlled by .exclude under source/. Allows assets, e.g., template.html
be placed under source/ but not copied over to deployment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Highlights:
* Change font to Times/Times New Roman + Courier;
* Text slightly darkened across the board to account for the thinner
Times;
* Eliminate line numbers;
* Use custom highlight.css (based on highlight-css supplied by Pandoc,
but hightlight more classes when Pandoc falls short, e.g., span.im for
Python from and import).
Closes #5 because we don't have line numbers anymore.
|
| |
|
| |
|
|
|
|
| |
Fixes #7.
|
|
|
|
| |
Looks slightly more professional.
|
|
|
|
| |
No point in checking for trailing whitespace etc. in builds.
|
|
|
|
|
| |
Sometimes (e.g., occasionally in China) Google/FontAwesome webfonts
might not be available, rendering the whole site unusable.
|
|
|
|
|
| |
As an added bonus, new post also automatically opens in a text editor
now.
|
| |
|
|
|
|
| |
That will lead to Dropbox constantly syncing the file under preview mode.
|
|
|
|
| |
The main aim is a more logical DOM structure and more performant CSS.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add class and variation selector (# U+FE0E: VARIATION SELECTOR-15) to
U+21A9: LEFTWARDS ARROW WITH HOOK to fix outstanding font issue of
footnote backlinks on mobile.
Updated styles accordingly.
Trick learned from Daring Fireball.
Before: https://i.imgur.com/eUbL1k8.png
After: https://i.imgur.com/msv3INn.png
|
| |
|
|
|
|
|
|
|
|
| |
Previously there's only one postprocessing function `number_code_lines`,
which directly reads an HTML file, and after processing, writes
back. Now the reading and writing is handled by a dedicated dispatcher
`postprocess_html_file`, which can call multiple postprocessors that
operates on a soup object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Global font size in each style sheet has been tweaked very carefully so
that the precise line height is very close to a whole number of pixels,
so that precision alignment using em, which aligns something
precise (top: 13.5em) to something inprecise (line heights, with
accumulated errors due to rounding in every line), is not lost.
Note that Firefox is NOT supported, since each line seems to always
occupy one more pixel than the calculated line height.
For some reason line numbers in the print view are still rather
problematic at a page continuation. In Chrome and Safari, the first two
line numbers on a new page tend to overlap, so everything afterwards are
off (and on Firefox line numbers do not show up on the second page at
all). Anyway, printing shouldn't be a big concern.
|
|
|
|
|
|
|
|
|
|
|
|
| |
For better formatting.
The following screenshots illustrate the difference:
* https://i.imgur.com/ZfkUpBG.png
* https://i.imgur.com/S6cRK00.png
I also reduced the indentation on the left of each year's index from 2em
to 1em.
|
|
|
|
|
|
|
|
| |
Regenerate a page if the generator mtime is later than the page's
mtime (just like for the template).
Previewer still should be relaunched after modification to the
generator, since the generator won't be patched until the next run.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Explicitly specify the lxml parser to suppress warnings;
* Supposedly fix the
AttributeError: 'NoneType' object has no attribute 'next_element'
issue [1] with BeautifulSoup when finding elements after extracting
certain tags. I bet I've encountered that error before, but it seemed
to went away somehow. Not this time. Without digging into to much
detail (don't have time to file a bug or anything), this fix --
precompile a list of tags to extract, and only extract after done with
other processing -- seem to work.
* Add .nojekyll to root of build
dir (https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/).
[1]: Full traceback:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-9d3d20b34e0c> in <module>()
----> 1 a.footer
/Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in __getattr__(self, tag)
995 # We special case contents to avoid recursion.
996 elif not tag.startswith("__") and not tag=="contents":
--> 997 return self.find(tag)
998 raise AttributeError(
999 "'%s' object has no attribute '%s'" % (self.__class__, tag))
/Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in find(self, name, attrs, recursive, text, **kwargs)
1232 criteria."""
1233 r = None
-> 1234 l = self.find_all(name, attrs, recursive, text, 1, **kwargs)
1235 if l:
1236 r = l[0]
/Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in find_all(self, name, attrs, recursive, text, limit, **kwargs)
1253 if not recursive:
1254 generator = self.children
-> 1255 return self._find_all(name, attrs, text, limit, generator, **kwargs)
1256 findAll = find_all # BS3
1257 findChildren = find_all # BS2
/Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in _find_all(self, name, attrs, text, limit, generator, **kwargs)
527 while True:
528 try:
--> 529 i = next(generator)
530 except StopIteration:
531 break
/Users/zmwang/.pyenv/versions/3.4.3/lib/python3.4/site-packages/beautifulsoup4-4.4.0-py3.4.egg/bs4/element.py in descendants(self)
1271 while current is not stopNode:
1272 yield current
-> 1273 current = current.next_element
1274
1275 # CSS selector code
AttributeError: 'NoneType' object has no attribute 'next_element'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I just noticed that code font is crazy without Consolas installed (I
recently reinstalled my OS and got rid of Office for Mac 2011 — that's
probably why). The line numbers are all off (since the line heights are
carefully pre-calculated, and fallback fonts of different leadings won't
help). Therefore, I'm moving to the quite nice looking and controllable
Droid Sans Mono. Isn't as satisfactory as Consolas on the web, but
certainly better than Monaco.
Note: I originally copied my list Consolas, Monaco, 'Andale Mono',
monospace (I added Courier since I like it a lot as the primitive
monospace font) from MDN Wiki, but now it looks like a bad choice when I
don't have Consolas any more. By the way, MDN Wiki renders line numbers
using JS, so at least they are able to calculate the line heights. I'm
serving everything statically, so this is a problem.
|
|
|
|
| |
Each lxml.etree._Element.text needs a new CDATA.
|
|
|
|
|
|
| |
Specifically lxml.etree instead of xml.etree.ElementTree.
This allows CDATA without hack.
|
|
|
|
|
| |
Subtitle was added along with RSS, but I accidentally used <title>
instead of <subtitle> for the tag.
|
| |
|
|
|
|
| |
Fixes #2.
|
|
|
|
|
| |
Use canonical format for BLOG_HOME, and use urllib.parse.join for safe
concatenation.
|
|
|
|
|
|
| |
For one thing, the top attribute is not recommended in feeds (see
https://github.com/zmwangx/zmwangx.github.io/issues/2). Also, extracting
line numbers (which are useless in feeds) make the feeds smaller.
|
| |
|
|
|
|
| |
Now reading date directly from post.
|
| |
|
|
|
|
| |
Somehow the linter failed to catch the obvious syntax errors.
|
|
|
|
|
|
|
|
|
|
| |
The way I handle line numbers and the pre block in general is inspired
by the MDN wiki. See, for instance,
https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
a screenshot is here: https://i.imgur.com/982TBDc.png
Also tweaked other styles, e.g., changed the primary monospace font to
Consolas, and slightly tweaked a few old posts.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
coreutils
date --iso-8601=s
generates output like
2015-05-13T13:04:24-0700
while the correct format (at least the format Python
datetime.datetime.isoformat() prints, and the format Google expects) is
2015-05-13T13:04:24-07:00
Account for this problem. I didn't read the RFC, so not sure.
|
|
|
|
| |
(other than index.html).
|
|
|
|
|
|
| |
Configuration constants are configurable at the top of the source
file. This is not final: they should be put into a YAML/INI config file
in the end.
|
|
|
|
|
|
|
| |
https://travis-ci.org/zmwangx/zmwangx.github.io/builds/61860458
First step in debugging: dump the HTML to see what's missing and how it
missed.
|
|
|
|
|
| |
Also fixed the bugs in pyblog introduced in the last revision and
tweaked the theme a bit.
|
|
|
|
|
|
|
| |
Also install requirements in .travis.yml.
By the way, I explored ways to install Pandoc in a Travis container
environment (without sudo), but that's just too hard. Giving up.
|
|
|
|
|
|
| |
Even after implementing touch, I can't remember to touch a new post
before deploying. Now gen_deploy tries to smartly determine the latest
post and prompts for touching.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also implemented the "touch" action in pyblog, as well as wrote a
README.md for the source branch. And some other minor patching.
|
|
|
|
| |
Among other fixes and tweaks.
|