| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
Apparently I didn't know what I was doing. Stopping the server is such a
simple problem, yet I made it so complicated.
Handling SIGINT gracefully, on the other hand, is a little bit tricky,
due to blocked communication between different processes. Anyway, I've
got it covered now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also tweaked icons a bit.
Note that this commit doesn't really work: I implemented a "stoppable
HTTP Server" here to be stopped when "mother process" receives
SIGINT (i.e., KeyboardInterrupt), without realizing that all porcesses
get SIGINT. Therefore, the custom server is hardly needed.
See http://git.io/vJ9yA for more information.
(This implementation has some value tought, that's why I'm committing to
keep it in history.)
|
|
|
|
| |
Also changed month to short format on the index page.
|
|
|
|
|
|
|
|
|
|
|
| |
Also fixed several problems:
1. Rending SVG and making it a clickable link is basically impossible
across multiple browsers. I'm now using a pretty good PNG;
2. Implemented new_post in pyblog;
3. Footnotes related updates to the theme.
|
|
|
|
|
|
|
|
| |
Note that I'm using an <embed> tag with the svg because if wrapped in
<img>, the svg won't render on Safari. After using the <embed> tag, the
svg renders on all four major browsers on OS X (Chrome, Safari, Firefox,
Opera), and it looks nice on all three but Firefox, in which case it's
crappy as fuck.
|
| |
|
|
|
|
| |
Mainly generating feed and index.
|
|
Also wrote pyblog that currently can generate parts most of the blog.
|