vertiginous-ultraviolet 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,6 @@
1
+ ==0.10.3
2
+ * Added shoes rendering
3
+
1
4
  == 0.10.2
2
5
  * Fixed --no-lines command line option.
3
6
  * Updated PHP syntax, no longer stalling.
@@ -4,6 +4,7 @@ lib/uv/utility.rb
4
4
  lib/uv.rb
5
5
  bin/theme2xhtmlrender
6
6
  bin/theme2latexrender
7
+ bin/theme2shoesrender
7
8
  bin/uv
8
9
  History.txt
9
10
  Rakefile
@@ -51,6 +52,27 @@ render/xhtml/cobalt.render
51
52
  render/xhtml/iplastic.render
52
53
  render/xhtml/all_hallows_eve.render
53
54
  render/xhtml/pastels_on_dark.render
55
+ render/shoes/all_hallows_eve.render
56
+ render/shoes/amy.render
57
+ render/shoes/blackboard.render
58
+ render/shoes/cobalt.render
59
+ render/shoes/dawn.render
60
+ render/shoes/eiffel.render
61
+ render/shoes/espresso_libre.render
62
+ render/shoes/idle.render
63
+ render/shoes/iplastic.render
64
+ render/shoes/lazy.render
65
+ render/shoes/mac_classic.render
66
+ render/shoes/magicwb_amiga.render
67
+ render/shoes/monokai.render
68
+ render/shoes/pastels_on_dark.render
69
+ render/shoes/slush_poppies.render
70
+ render/shoes/spacecadet.render
71
+ render/shoes/sunburst.render
72
+ render/shoes/twilight.render
73
+ render/shoes/vibrant_ink.render
74
+ render/shoes/writeroom.render
75
+ render/shoes/zenburnesque.render
54
76
  render/latex/mac_classic.render
55
77
  render/latex/active4d.render
56
78
  render/latex/cobalt.render
@@ -0,0 +1,102 @@
1
+ #! /usr/bin/env ruby
2
+ begin
3
+ require 'plist'
4
+ rescue LoadError
5
+ require 'rubygems'
6
+ require 'plist'
7
+ end
8
+ require 'uv/utility'
9
+
10
+
11
+ base_dir = File.join( File.dirname(__FILE__), '..', 'render' )
12
+
13
+ def settings
14
+ unless @settings
15
+ @settings = @theme["settings"].find { |s| ! s["name"] }["settings"]
16
+ end
17
+ @settings
18
+ end
19
+
20
+ @theme = Plist::parse_xml( ARGV[0] )
21
+ render = {"name" => @theme["name"]}
22
+ codecolumn = ""
23
+ numbercolumn = ""
24
+ standard_name = File.basename( ARGV[0] ).downcase.gsub(/\s+/, '_').gsub('.tmtheme', '').gsub(/\W/, '').gsub(/_+/, '_')
25
+
26
+ render["tags"] = []
27
+
28
+ @theme["settings"].each do |t|
29
+ if t["scope"]
30
+ class_name = t["name"].downcase.gsub(/\W/, ' ').gsub('.tmtheme', '').split(' ').collect{|s| s.capitalize}.join
31
+ if class_name == ""
32
+ class_name = "x" * t["name"].size
33
+ end
34
+
35
+ tag = {}
36
+ tag["selector"] = t["scope"]
37
+ tag["begin"] = 'span(['
38
+ tag["end"] = ""
39
+ render["tags"] << tag
40
+ begin_string = ""
41
+ end_string = "]"
42
+ if s = t["settings"]
43
+ if s["background"]
44
+ begin_string << ", :fill => rgb(#{Uv.rgb(settings, s["background"])})"
45
+ end
46
+ if s["foreground"]
47
+ begin_string << ''
48
+ end_string << ", :stroke => rgb(#{Uv.rgb(settings, s["foreground"])})"
49
+ end
50
+ case s["fontStyle"]
51
+ when /bold/
52
+ end_string << ", :weight => 'bold'"
53
+ when /italic/
54
+ end_string << ", :emphasis => 'italic'"
55
+ when /underline/
56
+ end_string << ", :underline => 'single'"
57
+ end
58
+ end_string << "),\n"
59
+ tag["end"] = end_string
60
+ end
61
+
62
+
63
+ elsif ! t["name"]
64
+ if s = t["settings"]
65
+ codecolumn = ""
66
+ codecolumn << ", :fill => rgb(#{Uv.rgb(settings, s["background"])})"
67
+ codecolumn << ", :stroke => rgb(#{Uv.rgb(settings, s["foreground"])})"
68
+ @bg = "background(rgb(#{Uv.rgb(settings, s["background"])}) ,:curve => 12)"
69
+ bg = Uv.alpha_blend(s["background"], s["foreground"])
70
+ numbercolumn = '"'
71
+ numbercolumn << ", :fill => rgb(#{Uv.rgb(settings, s["background"])})"
72
+ numbercolumn << ", :stroke => rgb(#{Uv.rgb(settings, bg)})"
73
+
74
+ tag = {}
75
+ tag["begin"] = 'span("'
76
+ tag["end"] = "#{numbercolumn} ),"
77
+ render["line-numbers"] = tag
78
+ end
79
+ end
80
+ end
81
+
82
+ render["filter"] = '@escaped.inspect + ", " '
83
+
84
+ tag = {}
85
+ tag["begin"] = ""
86
+ tag["end"] = '"\n",'
87
+ render["line"] = tag
88
+
89
+ tag = {}
90
+ tag["begin"] =<<END
91
+ #{@bg}
92
+ para( [
93
+ END
94
+ tag["end"] = "] #{codecolumn}, :size => 'xx-small', :font => 'Bitstream Vera Sans Mono')"
95
+ render["listing"] = tag
96
+
97
+ tag = {}
98
+ tag["begin"] = "stack(:margin => 4 ){\n"
99
+ tag["end"] = '}'
100
+ render["document"] = tag
101
+
102
+ File.open( File.join( base_dir, "shoes", "#{standard_name}.render" ), "w" ) {|f| YAML.dump( render, f ) }
data/lib/uv.rb CHANGED
@@ -5,13 +5,12 @@ require 'uv/render_processor.rb'
5
5
 
6
6
  module Uv
7
7
 
8
- def Uv.path
9
- result = []
10
- result << File.join(File.dirname(__FILE__), ".." )
8
+ def Uv.paths
9
+ @paths ||= [File.join(File.dirname(__FILE__), ".." ) ]
11
10
  end
12
11
 
13
12
  def Uv.copy_files output, output_dir
14
- Uv.path.each do |dir|
13
+ Uv.paths.each do |dir|
15
14
  dir_name = File.join( dir, "render", output, "files" )
16
15
  FileUtils.cp_r( Dir.glob(File.join( dir_name, "." )), output_dir ) if File.exists?( dir_name )
17
16
  end
@@ -19,21 +18,35 @@ module Uv
19
18
 
20
19
  def Uv.init_syntaxes
21
20
  @syntaxes = {}
22
- Dir.glob( File.join(File.dirname(__FILE__), '..', 'syntax', '*.syntax') ).each do |f|
23
- @syntaxes[File.basename(f, '.syntax')] = Textpow::SyntaxNode.load( f )
21
+ Uv.paths.each do |dir|
22
+ Dir.glob( File.join(dir, 'syntax', '*.syntax') ).each do |f|
23
+ @syntaxes[File.basename(f, '.syntax')] = Textpow::SyntaxNode.load( f )
24
+ end
24
25
  end
25
26
  end
26
27
 
27
28
  def Uv.syntaxes
28
- Dir.glob( File.join(File.dirname(__FILE__), '..', 'syntax', '*.syntax') ).collect do |f|
29
- File.basename(f, '.syntax')
30
- end
29
+ Uv.paths.collect do |dir|
30
+ Dir.glob( File.join(dir, 'syntax', '*.syntax') ).collect do |f|
31
+ File.basename(f, '.syntax')
32
+ end
33
+ end.flatten
31
34
  end
32
35
 
33
36
  def Uv.themes
34
- Dir.glob( File.join(File.dirname(__FILE__), '..', 'render', 'xhtml', 'files', 'css', '*.css') ).collect do |f|
35
- File.basename(f, '.css')
36
- end
37
+ Uv.paths.collect do |dir|
38
+ Dir.glob( File.join(dir, 'render', 'xhtml', 'files', 'css', '*.css') ).collect do |f|
39
+ File.basename(f, '.css')
40
+ end
41
+ end.flatten
42
+ end
43
+
44
+ def Uv.renderer(output, render_style)
45
+ Uv.paths.each do |dir|
46
+ render_path = File.join(dir, 'render', output , "#{render_style}.render")
47
+ return render_path if File.exist?(render_path)
48
+ end
49
+ raise( ArgumentError, "Style #{render_style} could not be found for #{output}" )
37
50
  end
38
51
 
39
52
  def Uv.syntax_for_file file_name
@@ -63,10 +76,9 @@ module Uv
63
76
  result
64
77
  end
65
78
 
66
- def Uv.parse text, output = "xhtml", syntax_name = nil, line_numbers = false, render_style = "classic", headers = false
79
+ def Uv.parse text, output = "xhtml", syntax_name = nil, line_numbers = false, render_style = "mac_classic", headers = false
67
80
  init_syntaxes unless @syntaxes
68
- renderer = File.join( File.dirname(__FILE__), '..',"render", output,"#{render_style}.render")
69
- raise( ArgumentError, "Output for #{output} is not yet implemented" ) unless File.exists?(renderer)
81
+ renderer = self.renderer(output, render_style)
70
82
  css_class = render_style
71
83
  render_options = YAML.load( File.open( renderer ) )
72
84
  render_processor = RenderProcessor.new( render_options, line_numbers, headers )
@@ -85,5 +97,4 @@ module Uv
85
97
 
86
98
  @syntaxes[syntax_name].parse( text, processor )
87
99
  end
88
-
89
100
  end
@@ -63,5 +63,12 @@ module Uv
63
63
  else
64
64
  color
65
65
  end
66
- end
66
+ end
67
+
68
+ def Uv.rgb settings, color, fg = false
69
+ if color
70
+ r = normalize_color(settings, color, fg)
71
+ r[1..-1].scan(/\w\w/).map{|n| n.to_i(16) }.join(', ')
72
+ end
73
+ end
67
74
  end
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: All Hallow's Eve
3
+ line:
4
+ begin: ""
5
+ end: "\"\\n\","
6
+ tags:
7
+ - begin: span([
8
+ end: |
9
+ ], :stroke => rgb(255, 255, 255)),
10
+
11
+ selector: text
12
+ - begin: span([
13
+ end: |
14
+ ], :stroke => rgb(255, 255, 255)),
15
+
16
+ selector: source
17
+ - begin: span([
18
+ end: |
19
+ ], :stroke => rgb(153, 51, 204)),
20
+
21
+ selector: comment
22
+ - begin: span([
23
+ end: |
24
+ ], :stroke => rgb(51, 135, 204)),
25
+
26
+ selector: constant
27
+ - begin: span([
28
+ end: |
29
+ ], :stroke => rgb(204, 120, 51)),
30
+
31
+ selector: keyword
32
+ - begin: span([
33
+ end: |
34
+ ], :stroke => rgb(208, 208, 255)),
35
+
36
+ selector: meta.preprocessor.c
37
+ - begin: span([
38
+ end: |
39
+ ]),
40
+
41
+ selector: keyword.control.import
42
+ - begin: span([
43
+ end: |
44
+ ]),
45
+
46
+ selector: entity.name.function
47
+ - begin: span([
48
+ end: |
49
+ ], :emphasis => 'italic'),
50
+
51
+ selector: variable.parameter
52
+ - begin: span([
53
+ end: |
54
+ ], :stroke => rgb(255, 255, 255)),
55
+
56
+ selector: source comment.block
57
+ - begin: span([
58
+ end: |
59
+ ], :stroke => rgb(102, 204, 51)),
60
+
61
+ selector: string
62
+ - begin: span([
63
+ end: |
64
+ ], :stroke => rgb(170, 170, 170)),
65
+
66
+ selector: string constant.character.escape
67
+ - begin: span([
68
+ end: |
69
+ ], :stroke => rgb(0, 0, 0)),
70
+
71
+ selector: string.interpolated
72
+ - begin: span([
73
+ end: |
74
+ ], :stroke => rgb(204, 204, 51)),
75
+
76
+ selector: string.regexp
77
+ - begin: span([
78
+ end: |
79
+ ], :stroke => rgb(204, 204, 51)),
80
+
81
+ selector: string.literal
82
+ - begin: span([
83
+ end: |
84
+ ], :stroke => rgb(85, 85, 85)),
85
+
86
+ selector: string.interpolated constant.character.escape
87
+ - begin: span([
88
+ end: |
89
+ ], :underline => 'single'),
90
+
91
+ selector: entity.name.type
92
+ - begin: span([
93
+ end: |
94
+ ], :emphasis => 'italic'),
95
+
96
+ selector: entity.other.inherited-class
97
+ - begin: span([
98
+ end: |
99
+ ], :underline => 'single'),
100
+
101
+ selector: entity.name.tag
102
+ - begin: span([
103
+ end: |
104
+ ]),
105
+
106
+ selector: entity.other.attribute-name
107
+ - begin: span([
108
+ end: |
109
+ ], :stroke => rgb(200, 55, 48)),
110
+
111
+ selector: support.function
112
+ listing:
113
+ begin: |
114
+ background(rgb(0, 0, 0) ,:curve => 12)
115
+ para( [
116
+
117
+ end: "] , :fill => rgb(0, 0, 0), :stroke => rgb(255, 255, 255), :size => 'xx-small', :font => 'Bitstream Vera Sans Mono')"
118
+ document:
119
+ begin: |
120
+ stack(:margin => 4 ){
121
+
122
+ end: "}"
123
+ filter: "@escaped.inspect + \", \" "
124
+ line-numbers:
125
+ begin: span("
126
+ end: "\", :fill => rgb(0, 0, 0), :stroke => rgb(255, 255, 255) ),"
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: Amy
3
+ line:
4
+ begin: ""
5
+ end: "\"\\n\","
6
+ tags:
7
+ - begin: span([
8
+ end: |
9
+ ], :stroke => rgb(64, 64, 128), :emphasis => 'italic'),
10
+
11
+ selector: comment.block
12
+ - begin: span([
13
+ end: |
14
+ ], :stroke => rgb(153, 153, 153)),
15
+
16
+ selector: string
17
+ - begin: span([
18
+ end: |
19
+ ], :stroke => rgb(112, 112, 144)),
20
+
21
+ selector: constant.language
22
+ - begin: span([
23
+ end: |
24
+ ], :stroke => rgb(112, 144, 176)),
25
+
26
+ selector: constant.numeric
27
+ - begin: span([
28
+ end: |
29
+ ], :weight => 'bold'),
30
+
31
+ selector: constant.numeric.integer.int32
32
+ - begin: span([
33
+ end: |
34
+ ], :emphasis => 'italic'),
35
+
36
+ selector: constant.numeric.integer.int64
37
+ - begin: span([
38
+ end: |
39
+ ], :weight => 'bold'),
40
+
41
+ selector: constant.numeric.integer.nativeint
42
+ - begin: span([
43
+ end: |
44
+ ], :underline => 'single'),
45
+
46
+ selector: constant.numeric.floating-point.ocaml
47
+ - begin: span([
48
+ end: |
49
+ ], :stroke => rgb(102, 102, 102)),
50
+
51
+ selector: constant.character
52
+ - begin: span([
53
+ end: |
54
+ ], :stroke => rgb(128, 128, 160)),
55
+
56
+ selector: constant.language.boolean
57
+ - begin: span([
58
+ end: |
59
+ ]),
60
+
61
+ selector: constant.language
62
+ - begin: span([
63
+ end: |
64
+ ]),
65
+
66
+ selector: constant.other
67
+ - begin: span([
68
+ end: |
69
+ ], :stroke => rgb(0, 128, 128)),
70
+
71
+ selector: variable.language, variable.other
72
+ - begin: span([
73
+ end: |
74
+ ], :stroke => rgb(160, 128, 255)),
75
+
76
+ selector: keyword
77
+ - begin: span([
78
+ end: |
79
+ ], :stroke => rgb(160, 160, 255)),
80
+
81
+ selector: keyword.operator
82
+ - begin: span([
83
+ end: |
84
+ ], :stroke => rgb(208, 208, 255)),
85
+
86
+ selector: keyword.other.decorator
87
+ - begin: span([
88
+ end: |
89
+ ], :underline => 'single'),
90
+
91
+ selector: keyword.operator.infix.floating-point.ocaml
92
+ - begin: span([
93
+ end: |
94
+ ], :underline => 'single'),
95
+
96
+ selector: keyword.operator.prefix.floating-point.ocaml
97
+ - begin: span([
98
+ end: |
99
+ ], :stroke => rgb(192, 128, 192)),
100
+
101
+ selector: keyword.other.directive
102
+ - begin: span([
103
+ end: |
104
+ ], :stroke => rgb(192, 128, 192), :underline => 'single'),
105
+
106
+ selector: keyword.other.directive.line-number
107
+ - begin: span([
108
+ end: |
109
+ ], :stroke => rgb(128, 160, 255)),
110
+
111
+ selector: keyword.control
112
+ - begin: span([
113
+ end: |
114
+ ], :stroke => rgb(176, 255, 240)),
115
+
116
+ selector: storage
117
+ - begin: span([
118
+ end: |
119
+ ], :stroke => rgb(96, 176, 255)),
120
+
121
+ selector: entity.name.type.variant
122
+ - begin: span([
123
+ end: |
124
+ ], :stroke => rgb(96, 176, 255), :emphasis => 'italic'),
125
+
126
+ selector: storage.type.variant.polymorphic, entity.name.type.variant.polymorphic
127
+ - begin: span([
128
+ end: |
129
+ ], :stroke => rgb(176, 0, 176)),
130
+
131
+ selector: entity.name.type.module
132
+ - begin: span([
133
+ end: |
134
+ ], :stroke => rgb(176, 0, 176), :underline => 'single'),
135
+
136
+ selector: entity.name.type.module-type.ocaml
137
+ - begin: span([
138
+ end: |
139
+ ], :stroke => rgb(160, 0, 80)),
140
+
141
+ selector: support.other
142
+ - begin: span([
143
+ end: |
144
+ ], :stroke => rgb(112, 224, 128)),
145
+
146
+ selector: entity.name.type.class
147
+ - begin: span([
148
+ end: |
149
+ ], :stroke => rgb(112, 224, 160)),
150
+
151
+ selector: entity.name.type.class-type
152
+ - begin: span([
153
+ end: |
154
+ ]),
155
+
156
+ selector: entity.other.inherited-class
157
+ - begin: span([
158
+ end: |
159
+ ], :stroke => rgb(80, 160, 160)),
160
+
161
+ selector: entity.name.function
162
+ - begin: span([
163
+ end: |
164
+ ], :stroke => rgb(128, 176, 176)),
165
+
166
+ selector: variable.parameter
167
+ - begin: span([
168
+ end: |
169
+ ], :stroke => rgb(48, 128, 160)),
170
+
171
+ selector: entity.name.type.token
172
+ - begin: span([
173
+ end: |
174
+ ], :stroke => rgb(60, 176, 208)),
175
+
176
+ selector: entity.name.type.token.reference
177
+ - begin: span([
178
+ end: |
179
+ ], :stroke => rgb(144, 224, 224)),
180
+
181
+ selector: entity.name.function.non-terminal
182
+ - begin: span([
183
+ end: |
184
+ ], :stroke => rgb(192, 240, 240)),
185
+
186
+ selector: entity.name.function.non-terminal.reference
187
+ - begin: span([
188
+ end: |
189
+ ], :stroke => rgb(0, 144, 144)),
190
+
191
+ selector: entity.name.tag
192
+ - begin: span([
193
+ end: |
194
+ ]),
195
+
196
+ selector: entity.other.attribute-name
197
+ - begin: span([
198
+ end: |
199
+ ]),
200
+
201
+ selector: support.constant
202
+ - begin: span([
203
+ end: |
204
+ ]),
205
+
206
+ selector: support.type, support.class
207
+ - begin: span([
208
+ end: |
209
+ ]),
210
+
211
+ selector: support.other.variable
212
+ - begin: span([
213
+ end: |
214
+ ], :stroke => rgb(64, 0, 128), :weight => 'bold'),
215
+
216
+ selector: invalid.illegal
217
+ - begin: span([
218
+ end: |
219
+ ], :stroke => rgb(32, 0, 32)),
220
+
221
+ selector: invalid.deprecated
222
+ - begin: span([
223
+ end: |
224
+ ]),
225
+
226
+ selector: source.camlp4.embedded
227
+ - begin: span([
228
+ end: |
229
+ ]),
230
+
231
+ selector: source.camlp4.embedded.parser.ocaml
232
+ - begin: span([
233
+ end: |
234
+ ], :stroke => rgb(128, 80, 128)),
235
+
236
+ selector: punctuation
237
+ listing:
238
+ begin: |
239
+ background(rgb(32, 0, 32) ,:curve => 12)
240
+ para( [
241
+
242
+ end: "] , :fill => rgb(32, 0, 32), :stroke => rgb(208, 208, 255), :size => 'xx-small', :font => 'Bitstream Vera Sans Mono')"
243
+ document:
244
+ begin: |
245
+ stack(:margin => 4 ){
246
+
247
+ end: "}"
248
+ filter: "@escaped.inspect + \", \" "
249
+ line-numbers:
250
+ begin: span("
251
+ end: "\", :fill => rgb(32, 0, 32), :stroke => rgb(208, 208, 255) ),"