vebdew 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/README.md +70 -42
  2. data/VERSION +1 -1
  3. data/lib/template/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  4. data/lib/template/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  5. data/lib/template/css/images/ui-bg_gloss-wave_16_121212_500x100.png +0 -0
  6. data/lib/template/css/images/ui-bg_highlight-hard_15_888888_1x100.png +0 -0
  7. data/lib/template/css/images/ui-bg_highlight-hard_55_555555_1x100.png +0 -0
  8. data/lib/template/css/images/ui-bg_highlight-soft_35_adadad_1x100.png +0 -0
  9. data/lib/template/css/images/ui-bg_highlight-soft_60_dddddd_1x100.png +0 -0
  10. data/lib/template/css/images/ui-bg_inset-soft_15_121212_1x100.png +0 -0
  11. data/lib/template/css/images/ui-icons_666666_256x240.png +0 -0
  12. data/lib/template/css/images/ui-icons_aaaaaa_256x240.png +0 -0
  13. data/lib/template/css/images/ui-icons_bbbbbb_256x240.png +0 -0
  14. data/lib/template/css/images/ui-icons_c98000_256x240.png +0 -0
  15. data/lib/template/css/images/ui-icons_cccccc_256x240.png +0 -0
  16. data/lib/template/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  17. data/lib/template/css/images/ui-icons_f29a00_256x240.png +0 -0
  18. data/lib/template/css/jquery-ui.css +306 -0
  19. data/lib/template/css/main.css +800 -0
  20. data/lib/template/css/reset.css +57 -0
  21. data/lib/template/css/ruler.css +34 -0
  22. data/lib/template/css/sample.css +128 -0
  23. data/lib/template/css/styles.css +102 -0
  24. data/lib/template/js/index.js +57 -0
  25. data/lib/template/js/init.js +6 -0
  26. data/lib/template/js/jquery-ui.min.js +76 -0
  27. data/lib/template/js/jquery.min.js +4 -0
  28. data/lib/template/js/reveal.js +705 -0
  29. data/lib/template/js/ruler.js +9 -0
  30. data/lib/template/js/sample.js +120 -0
  31. data/lib/template/vew/sample.vew +1 -1
  32. data/lib/vebdew/parser.rb +5 -1
  33. data/vebdew.gemspec +29 -1
  34. metadata +40 -12
@@ -0,0 +1,120 @@
1
+ /*global CodeMirror, hljs */
2
+ (function($, undefined){
3
+ "use strict";
4
+
5
+ // cached DOM elements
6
+ var $sampleContainerSrc = $('<div class="sample-container"></div>'),
7
+ $codeSrc = $('<code contenteditable></code>'),
8
+ $preSrc = $('<pre></pre>'),
9
+ $iframeSrc = $('<div class="iframe"><iframe></iframe></div>'),
10
+ $updateBtnSrc = $('<button>&raquo;</button>'),
11
+
12
+ updateIframe = function(iframe, $pre, wrapper){
13
+ var doc = iframe.contentDocument, newiframe,
14
+ height = $pre.height() || 200;
15
+ if(!doc){ // if cannot get iframe content, create a new one
16
+ newiframe = $('<iframe></iframe>').insertBefore(iframe).get(0);
17
+ $(iframe).remove();
18
+ iframe = newiframe; doc = iframe.contentDocument;
19
+ }
20
+ doc.open(); doc.writeln( wrapper($pre.text()) ); doc.close();
21
+ $(iframe).height(height);
22
+
23
+ // highligt the code
24
+ var $code = $pre.find('code'), // get $code to get unhighlighted text
25
+ ret = hljs.highlightAuto($code.text());
26
+ $code.html(ret.value);
27
+ $code.addClass(ret.language)
28
+
29
+ return iframe; // return the (possibly new) iframe
30
+ };
31
+
32
+ // example usage:
33
+ // $('script[type=text/x-sample]').sample();
34
+ //
35
+ $.fn.sample = function(options){
36
+ // 'this' should be <script> jQuery object
37
+ //
38
+
39
+ // method invocation
40
+ if(typeof arguments[0] === 'string'){
41
+ var args = arguments;
42
+ this.each(function(){
43
+ var method = $(this).data('sample')[options];
44
+ method.apply(this, Array.prototype.slice.call(args,1));
45
+ });
46
+ return; // do not execute the init part below
47
+ }
48
+
49
+ options = $.extend({
50
+ wrapper: function(lines){ // default wrapper: no-op
51
+ return lines;
52
+ }
53
+ }, options);
54
+
55
+ this.each(function(){
56
+ var
57
+ indent = 100, // shortest indent
58
+ lines = $(this).html().split('\n'); // lines of code
59
+
60
+ // finding indent
61
+ $.each(lines, function(){
62
+ var space = this.search(/[^ ]/);
63
+ if(space>0){
64
+ indent = Math.min(space, indent);
65
+ }
66
+ });
67
+
68
+ // removing indent & empty lines
69
+ lines = $.map(lines, function(l){
70
+ return l.substr(indent);
71
+ });
72
+
73
+ // remove leading & trailing empty lines
74
+ while(lines[0] === ''){
75
+ lines.shift();
76
+ }
77
+ while(lines[lines.length-1] === ''){
78
+ lines.pop();
79
+ }
80
+
81
+ // join lines
82
+ lines = lines.join('\n');
83
+
84
+
85
+ // output stage
86
+ //
87
+ // the container of all the elements, and
88
+ // insert the container below the script tag.
89
+ var $sampleContainer = $sampleContainerSrc.clone()
90
+ .addClass(this.className)
91
+ .insertAfter(this);
92
+
93
+ // append the code and append it to the container.
94
+ var $code = $codeSrc.clone().text(lines),
95
+ $pre = $preSrc.clone().append($code).appendTo($sampleContainer);
96
+
97
+
98
+ // previewing iframe
99
+ var iframe = $iframeSrc.clone().appendTo($sampleContainer).find('iframe').get(0);
100
+ $(iframe).ready(function(){
101
+ updateIframe(iframe, $pre, options.wrapper);
102
+ });
103
+
104
+ // update button
105
+ var $updateBtn = $updateBtnSrc.clone().insertAfter($pre);
106
+ $updateBtn.click(function(){
107
+ // updating iframe and highlight the $pre again
108
+ iframe = updateIframe(iframe, $pre, options.wrapper);
109
+ });
110
+
111
+
112
+ // install methods to data('sample')
113
+ $(this).data('sample', {
114
+ update: function(){
115
+ iframe = updateIframe(iframe, $pre, options.wrapper);
116
+ }
117
+ });
118
+ });
119
+ }
120
+ }(jQuery));
@@ -10,7 +10,7 @@
10
10
  :javascript_include_tag js/jquery.min.js
11
11
  :javascript_include_tag https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js
12
12
  :javascript_include_tag js/reveal.js, lib/highlight.js, js/ruler.js, js/sample.js
13
- :javascript_include_tag js/index.js
13
+ :javascript_include_tag js/init.js, js/index.js
14
14
 
15
15
  !SLIDE
16
16
 
data/lib/vebdew/parser.rb CHANGED
@@ -152,6 +152,10 @@ module Vebdew
152
152
  str
153
153
  end
154
154
 
155
+ def escape_html str
156
+ str.gsub(/>/, "&gt;").gsub(/</, "&lt;")
157
+ end
158
+
155
159
  def format_buffer
156
160
  @buffer.map! do |buf|
157
161
  "<p#{append}>#{format_content(buf)}</p>"
@@ -160,7 +164,7 @@ module Vebdew
160
164
 
161
165
  def format_content str
162
166
  str.strip!
163
- str.gsub! /`(([^\\`]|\\.)*)`/, %q{<code>\1</code>}
167
+ str.gsub!(/`(([^\\`]|\\.)*)`/) {%Q{<code>#{escape_html($1)}</code>}}
164
168
  str.gsub! /\!\[([^\]]+)\]\(([^\)]+)\)/, %q{<img src='\1' alt='\2'>}
165
169
  str.gsub! /\!\[([^\]]+)\]/, %q{<img src='\1'>}
166
170
  str.gsub! /\[([^\]]+)\]\(([^\)]+)\)/, %q{<a href='\1'>\2</a>}
data/vebdew.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "vebdew"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrew Liu"]
@@ -26,6 +26,34 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "bin/vebdew",
29
+ "lib/template/css/images/ui-bg_flat_0_aaaaaa_40x100.png",
30
+ "lib/template/css/images/ui-bg_glass_95_fef1ec_1x400.png",
31
+ "lib/template/css/images/ui-bg_gloss-wave_16_121212_500x100.png",
32
+ "lib/template/css/images/ui-bg_highlight-hard_15_888888_1x100.png",
33
+ "lib/template/css/images/ui-bg_highlight-hard_55_555555_1x100.png",
34
+ "lib/template/css/images/ui-bg_highlight-soft_35_adadad_1x100.png",
35
+ "lib/template/css/images/ui-bg_highlight-soft_60_dddddd_1x100.png",
36
+ "lib/template/css/images/ui-bg_inset-soft_15_121212_1x100.png",
37
+ "lib/template/css/images/ui-icons_666666_256x240.png",
38
+ "lib/template/css/images/ui-icons_aaaaaa_256x240.png",
39
+ "lib/template/css/images/ui-icons_bbbbbb_256x240.png",
40
+ "lib/template/css/images/ui-icons_c98000_256x240.png",
41
+ "lib/template/css/images/ui-icons_cccccc_256x240.png",
42
+ "lib/template/css/images/ui-icons_cd0a0a_256x240.png",
43
+ "lib/template/css/images/ui-icons_f29a00_256x240.png",
44
+ "lib/template/css/jquery-ui.css",
45
+ "lib/template/css/main.css",
46
+ "lib/template/css/reset.css",
47
+ "lib/template/css/ruler.css",
48
+ "lib/template/css/sample.css",
49
+ "lib/template/css/styles.css",
50
+ "lib/template/js/index.js",
51
+ "lib/template/js/init.js",
52
+ "lib/template/js/jquery-ui.min.js",
53
+ "lib/template/js/jquery.min.js",
54
+ "lib/template/js/reveal.js",
55
+ "lib/template/js/ruler.js",
56
+ "lib/template/js/sample.js",
29
57
  "lib/template/vew/sample.vew",
30
58
  "lib/template/vew/template.erb",
31
59
  "lib/vebdew.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vebdew
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: erubis
16
- requirement: &2154377100 !ruby/object:Gem::Requirement
16
+ requirement: &2154113200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2154377100
24
+ version_requirements: *2154113200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda
27
- requirement: &2154376360 !ruby/object:Gem::Requirement
27
+ requirement: &2154112480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2154376360
35
+ version_requirements: *2154112480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &2154375620 !ruby/object:Gem::Requirement
38
+ requirement: &2154111680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2154375620
46
+ version_requirements: *2154111680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &2154374500 !ruby/object:Gem::Requirement
49
+ requirement: &2154110680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2154374500
57
+ version_requirements: *2154110680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &2154371000 !ruby/object:Gem::Requirement
60
+ requirement: &2154109620 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.8.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2154371000
68
+ version_requirements: *2154109620
69
69
  description: Generate HTML5 slides
70
70
  email: andrewliu33@gmail.com
71
71
  executables:
@@ -83,6 +83,34 @@ files:
83
83
  - Rakefile
84
84
  - VERSION
85
85
  - bin/vebdew
86
+ - lib/template/css/images/ui-bg_flat_0_aaaaaa_40x100.png
87
+ - lib/template/css/images/ui-bg_glass_95_fef1ec_1x400.png
88
+ - lib/template/css/images/ui-bg_gloss-wave_16_121212_500x100.png
89
+ - lib/template/css/images/ui-bg_highlight-hard_15_888888_1x100.png
90
+ - lib/template/css/images/ui-bg_highlight-hard_55_555555_1x100.png
91
+ - lib/template/css/images/ui-bg_highlight-soft_35_adadad_1x100.png
92
+ - lib/template/css/images/ui-bg_highlight-soft_60_dddddd_1x100.png
93
+ - lib/template/css/images/ui-bg_inset-soft_15_121212_1x100.png
94
+ - lib/template/css/images/ui-icons_666666_256x240.png
95
+ - lib/template/css/images/ui-icons_aaaaaa_256x240.png
96
+ - lib/template/css/images/ui-icons_bbbbbb_256x240.png
97
+ - lib/template/css/images/ui-icons_c98000_256x240.png
98
+ - lib/template/css/images/ui-icons_cccccc_256x240.png
99
+ - lib/template/css/images/ui-icons_cd0a0a_256x240.png
100
+ - lib/template/css/images/ui-icons_f29a00_256x240.png
101
+ - lib/template/css/jquery-ui.css
102
+ - lib/template/css/main.css
103
+ - lib/template/css/reset.css
104
+ - lib/template/css/ruler.css
105
+ - lib/template/css/sample.css
106
+ - lib/template/css/styles.css
107
+ - lib/template/js/index.js
108
+ - lib/template/js/init.js
109
+ - lib/template/js/jquery-ui.min.js
110
+ - lib/template/js/jquery.min.js
111
+ - lib/template/js/reveal.js
112
+ - lib/template/js/ruler.js
113
+ - lib/template/js/sample.js
86
114
  - lib/template/vew/sample.vew
87
115
  - lib/template/vew/template.erb
88
116
  - lib/vebdew.rb
@@ -107,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
135
  version: '0'
108
136
  segments:
109
137
  - 0
110
- hash: 3658937832927531774
138
+ hash: 2574970994430618005
111
139
  required_rubygems_version: !ruby/object:Gem::Requirement
112
140
  none: false
113
141
  requirements: