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 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
- syntax_node_for(syntax_name).parse(text, processor)
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
@@ -1,3 +1,3 @@
1
1
  module Uv
2
- VERSION = '0.0.7.0'
2
+ VERSION = '0.0.7.1'
3
3
  end
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.0
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-03 00:00:00.000000000 Z
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: &70143552391360 !ruby/object:Gem::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: *70143552391360
25
+ version_requirements: *70263484525880
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: spox-plist
28
- requirement: &70143552409540 !ruby/object:Gem::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: *70143552409540
36
+ version_requirements: *70263484525340
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70143552409120 !ruby/object:Gem::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: *70143552409120
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