Skip to content

Commit ecfbaaa

Browse files
author
Jeremy Ruston
committed
Added support for JPEG and PNG bitmap tiddlers
1 parent ecabcd6 commit ecfbaaa

7 files changed

Lines changed: 56 additions & 1 deletion

File tree

‎js/App.js‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var WikiStore = require("./WikiStore.js").WikiStore,
1616
WikiTextParser = require("./WikiTextParser.js").WikiTextParser,
1717
JavaScriptParser = require("./JavaScriptParser.js").JavaScriptParser,
1818
SVGParser = require("./SVGParser.js").SVGParser,
19+
BitmapParser = require("./BitmapParser.js").BitmapParser,
1920
Navigators = require("./Navigators.js").Navigators,
2021
StoryNavigator = require("./StoryNavigator.js").StoryNavigator;
2122

@@ -30,6 +31,10 @@ var App = function() {
3031
store: this.store
3132
}));
3233
this.store.registerParser("image/svg+xml",new SVGParser());
34+
var bitmapParser = new BitmapParser();
35+
this.store.registerParser("image/jpg",bitmapParser);
36+
this.store.registerParser("image/jpeg",bitmapParser);
37+
this.store.registerParser("image/png",bitmapParser);
3338
// Register the standard tiddler serializers and deserializers
3439
tiddlerInput.register(this.store);
3540
tiddlerOutput.register(this.store);

‎js/BitmapParser.js‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*\
2+
title: js/BitmapParser.js
3+
4+
Compiles bitmap images into JavaScript functions that render them in HTML
5+
6+
\*/
7+
(function(){
8+
9+
/*jslint node: true */
10+
"use strict";
11+
12+
// The parse tree is degenerate
13+
var BitmapParseTree = function() {
14+
this.dependencies = [];
15+
};
16+
17+
BitmapParseTree.prototype.compile = function(type) {
18+
if(type === "text/html") {
19+
return "(function (tiddler,store,utils) {return '<img src=\"data:' + tiddler.fields.type + ';base64,' + tiddler.fields.text + '\">';})";
20+
} else {
21+
return null;
22+
}
23+
};
24+
25+
var BitmapParser = function() {
26+
};
27+
28+
BitmapParser.prototype.parse = function() {
29+
return new BitmapParseTree();
30+
};
31+
32+
exports.BitmapParser = BitmapParser;
33+
34+
})();

‎js/FileRetriever.js‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,17 @@ var fs = require("fs"),
1919
var FileRetriever = exports;
2020

2121
var fileRequest = function fileRequest(filepath,callback) {
22-
fs.readFile(filepath,"utf8", callback);
22+
fs.readFile(filepath, function (err,data) {
23+
if(err) {
24+
callback(err);
25+
} else {
26+
if([".jpg",".jpeg",".png"].indexOf(path.extname(filepath)) !== -1) {
27+
callback(err,data.toString("base64"));
28+
} else {
29+
callback(err,data.toString("utf8"));
30+
}
31+
}
32+
});
2333
};
2434

2535
var httpRequest = function(fileurl,callback) {
23.8 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
title: Motovun Jack.jpg
2+
type: image/jpg
3+
source: http://www.flickr.com/photos/jermy/6292279493/in/photostream

‎tiddlywiki5/tiddlers/split.recipe‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ tiddler: TiddlyWikiArchitecture.tid
77
tiddler: TiddlyWikiInternals.tid
88
tiddler: NewWikiTextFeatures.tid
99

10+
tiddler: Motovun Jack.jpg
11+
1012
tiddler: SiteTitle.tid
1113
tiddler: SiteSubtitle.tid
1214

‎tiddlywiki5/tiddlywiki5.recipe‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jsmodule: ../js/TiddlerInput.js
1818
jsmodule: ../js/TiddlerOutput.js
1919
jsmodule: ../js/WikiStore.js
2020
jsmodule: ../js/SVGParser.js
21+
jsmodule: ../js/BitmapParser.js
2122
jsmodule: ../js/WikiTextParser.js
2223
jsmodule: ../js/WikiTextRules.js
2324
jsmodule: ../js/WikiTextParseTree.js

0 commit comments

Comments
 (0)