uv 0.0.7.0 → 0.0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|