uv 0.0.7.0 → 0.0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/uv.rb +8 -52
- data/lib/uv/finding_syntaxes.rb +91 -0
- data/lib/uv/version.rb +1 -1
- metadata +9 -11
data/lib/uv.rb
CHANGED
@@ -3,6 +3,7 @@ require 'fileutils'
|
|
3
3
|
require 'textpow'
|
4
4
|
require 'uv/render_processor'
|
5
5
|
require "uv/version"
|
6
|
+
require "uv/finding_syntaxes"
|
6
7
|
require 'uv/utility'
|
7
8
|
require 'uv/engine' if defined?(Rails)
|
8
9
|
|
@@ -25,27 +26,6 @@ module Uv
|
|
25
26
|
result << File.join(File.dirname(__FILE__), ".." )
|
26
27
|
end
|
27
28
|
|
28
|
-
# Returns the Textpow::SyntaxNode for this syntax;
|
29
|
-
# @raise ArgumentError if no syntax is found
|
30
|
-
# Ex: syntax_node_for('ruby') => Textpow::SyntaxNode.load('ruby.syntax')
|
31
|
-
def self.syntax_node_for(syntax)
|
32
|
-
if syntax == '' or syntax.nil?
|
33
|
-
puts "No syntax supplied, defaulting to 'plain_text' syntax"
|
34
|
-
syntax = "plain_text"
|
35
|
-
end
|
36
|
-
if !@syntaxes.key?(syntax)
|
37
|
-
filename = File.join(@syntax_path, "#{syntax}.syntax")
|
38
|
-
@syntaxes[syntax] = if File.exist?(filename)
|
39
|
-
Textpow::SyntaxNode.load(filename)
|
40
|
-
else
|
41
|
-
false
|
42
|
-
end
|
43
|
-
end
|
44
|
-
if !@syntaxes[syntax]
|
45
|
-
raise ArgumentError, "Syntax not found. No #{syntax}.syntax file in #{@syntax_path}"
|
46
|
-
end
|
47
|
-
@syntaxes[syntax]
|
48
|
-
end
|
49
29
|
|
50
30
|
# Copies files from the [ruby-uv/render/<arg1>/files/] to the <arg2> output directory
|
51
31
|
def Uv.copy_files output, output_dir
|
@@ -69,46 +49,22 @@ module Uv
|
|
69
49
|
end
|
70
50
|
end
|
71
51
|
|
72
|
-
# Guesses the correct syntax based on the input files fileType.
|
73
|
-
# If the FileType doesnt containt a valid syntax name, each syntax
|
74
|
-
# has it's first line matched againts the the file's first line
|
75
|
-
def Uv.syntax_for_file file_name
|
76
|
-
init_syntaxes unless @syntaxes
|
77
|
-
first_line = ""
|
78
|
-
File.open( file_name, 'r' ) { |f|
|
79
|
-
while (first_line = f.readline).strip.size == 0; end
|
80
|
-
}
|
81
|
-
result = []
|
82
|
-
@syntaxes.each do |key, value|
|
83
|
-
assigned = false
|
84
|
-
if value.fileTypes
|
85
|
-
value.fileTypes.each do |t|
|
86
|
-
if t == File.basename( file_name ) || t == File.extname( file_name )[1..-1]
|
87
|
-
result << [key, value]
|
88
|
-
assigned = true
|
89
|
-
break
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
unless assigned
|
94
|
-
if value.firstLineMatch && value.firstLineMatch =~ first_line
|
95
|
-
result << [key, value]
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
result
|
100
|
-
end
|
101
|
-
|
102
52
|
# Parses <arg1> text using RenderProcessor.load(Textpow::SyntaxNode.parse(text)), returns the vailid <output>
|
103
53
|
def Uv.parse text, output = "xhtml", syntax_name = nil, line_numbers = false, render_style = nil, headers = false
|
104
54
|
RenderProcessor.load(output, render_style, line_numbers, headers) do |processor|
|
105
|
-
|
55
|
+
find_syntaxes([syntax_name], get_first_line(text)).parse(text, processor)
|
106
56
|
end.string
|
107
57
|
end
|
108
58
|
|
59
|
+
def Uv.get_first_line(text)
|
60
|
+
first_break = text.index(/[\n\r]/) || text.length - 1
|
61
|
+
text[0..first_break].strip
|
62
|
+
end
|
63
|
+
|
109
64
|
# Parses <arg1> text with Textpow::DebugProcessor, using the given syntax
|
110
65
|
def Uv.debug text, syntax_name
|
111
66
|
syntax_node_for(syntax_name).parse(text, Textpow::DebugProcessor.new)
|
112
67
|
end
|
113
68
|
|
69
|
+
|
114
70
|
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module Uv
|
2
|
+
|
3
|
+
def Uv.find_syntaxes_by_ext(ext)
|
4
|
+
syntaxes = []
|
5
|
+
if !@syntaxes.key?(ext)
|
6
|
+
@syntaxes.each do |syntax_name, syntax_node|
|
7
|
+
syntaxes << syntax_node if syntax_node.fileTypes && syntax_node.fileTypes.include?(ext)
|
8
|
+
end
|
9
|
+
filename = File.join(@syntax_path, "#{ext}.syntax")
|
10
|
+
syntaxes << Textpow::SyntaxNode.load(filename) if File.exist?(filename)
|
11
|
+
else
|
12
|
+
syntaxes << @syntaxes[ext]
|
13
|
+
end
|
14
|
+
syntaxes
|
15
|
+
end
|
16
|
+
|
17
|
+
def Uv.find_syntaxes_by_first_line(first_line)
|
18
|
+
syntaxes = []
|
19
|
+
@syntaxes.each do |syntax_name, syntax_node|
|
20
|
+
syntaxes << syntax_node if syntax_node.firstLineMatch && syntax_node.firstLineMatch =~ first_line
|
21
|
+
end
|
22
|
+
syntaxes
|
23
|
+
end
|
24
|
+
|
25
|
+
def Uv.find_syntaxes(extensions=[], first_line='')
|
26
|
+
init_syntaxes unless @syntaxes
|
27
|
+
syntaxes = []
|
28
|
+
extensions.each do |ext|
|
29
|
+
syntaxes << find_syntaxes_by_ext(ext)
|
30
|
+
end
|
31
|
+
syntaxes << find_syntaxes_by_first_line(first_line)
|
32
|
+
syntaxes
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
# Returns the Textpow::SyntaxNode for this syntax;
|
37
|
+
# @raise ArgumentError if no syntax is found
|
38
|
+
# Ex: syntax_node_for('ruby') => Textpow::SyntaxNode.load('ruby.syntax')
|
39
|
+
def self.syntax_node_for(syntax)
|
40
|
+
if !@syntaxes.key?(syntax)
|
41
|
+
filename = File.join(@syntax_path, "#{syntax}.syntax")
|
42
|
+
@syntaxes[syntax] = if File.exist?(filename)
|
43
|
+
Textpow::SyntaxNode.load(filename)
|
44
|
+
else
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
if !@syntaxes[syntax]
|
49
|
+
if syntax == '' or syntax.nil?
|
50
|
+
puts "No syntax supplied, defaulting to 'plain_text' syntax"
|
51
|
+
syntax = "plain_text"
|
52
|
+
else
|
53
|
+
raise ArgumentError, "Syntax not found. No #{syntax}.syntax file in #{@syntax_path}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
@syntaxes[syntax]
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
# Guesses the correct syntax based on the input files fileType.
|
62
|
+
# If the FileType doesnt containt a valid syntax name, each syntax
|
63
|
+
# has it's first line matched againts the the file's first line
|
64
|
+
def Uv.syntax_for_file file_name
|
65
|
+
init_syntaxes unless @syntaxes
|
66
|
+
first_line = ""
|
67
|
+
File.open( file_name, 'r' ) { |f|
|
68
|
+
while (first_line = f.readline).strip.size == 0; end
|
69
|
+
}
|
70
|
+
result = []
|
71
|
+
@syntaxes.each do |key, value|
|
72
|
+
assigned = false
|
73
|
+
if value.fileTypes
|
74
|
+
value.fileTypes.each do |t|
|
75
|
+
if t == File.basename( file_name ) || t == File.extname( file_name )[1..-1]
|
76
|
+
result << [key, value]
|
77
|
+
assigned = true
|
78
|
+
break
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
unless assigned
|
83
|
+
if value.firstLineMatch && value.firstLineMatch =~ first_line
|
84
|
+
result << [key, value]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
result
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
data/lib/uv/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.7.
|
4
|
+
version: 0.0.7.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: spox-textpow
|
17
|
-
requirement: &
|
17
|
+
requirement: &70263484525880 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70263484525880
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: spox-plist
|
28
|
-
requirement: &
|
28
|
+
requirement: &70263484525340 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70263484525340
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rake
|
39
|
-
requirement: &
|
39
|
+
requirement: &70263484524900 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70263484524900
|
48
48
|
description: Ruby powered syntax highlighting. Ruby 1.9 port of Ultraviolet
|
49
49
|
email:
|
50
50
|
- spox@modspox.com
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- bin/uv
|
66
66
|
- lib/uv.rb
|
67
67
|
- lib/uv/engine.rb
|
68
|
+
- lib/uv/finding_syntaxes.rb
|
68
69
|
- lib/uv/render_processor.rb
|
69
70
|
- lib/uv/utility.rb
|
70
71
|
- lib/uv/version.rb
|
@@ -312,9 +313,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
312
313
|
- - ! '>='
|
313
314
|
- !ruby/object:Gem::Version
|
314
315
|
version: '0'
|
315
|
-
segments:
|
316
|
-
- 0
|
317
|
-
hash: -1639761505872700738
|
318
316
|
requirements: []
|
319
317
|
rubyforge_project: uv
|
320
318
|
rubygems_version: 1.8.10
|