haml-edge 2.3.186 → 2.3.187

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/EDGE_GEM_VERSION +1 -1
  2. data/VERSION +1 -1
  3. data/lib/haml/exec.rb +94 -18
  4. data/lib/haml/helpers.rb +3 -1
  5. data/lib/sass/engine.rb +1 -1
  6. data/lib/sass/script/bool.rb +1 -1
  7. data/lib/sass/script/color.rb +1 -1
  8. data/lib/sass/script/funcall.rb +2 -2
  9. data/lib/sass/script/interpolation.rb +5 -5
  10. data/lib/sass/script/literal.rb +1 -1
  11. data/lib/sass/script/node.rb +10 -1
  12. data/lib/sass/script/number.rb +1 -1
  13. data/lib/sass/script/operation.rb +5 -5
  14. data/lib/sass/script/string.rb +12 -5
  15. data/lib/sass/script/unary_operation.rb +3 -3
  16. data/lib/sass/script/variable.rb +2 -2
  17. data/lib/sass/scss/css_parser.rb +1 -0
  18. data/lib/sass/scss/parser.rb +45 -25
  19. data/lib/sass/scss/rx.rb +1 -0
  20. data/lib/sass/tree/for_node.rb +1 -1
  21. data/lib/sass/tree/if_node.rb +1 -1
  22. data/lib/sass/tree/mixin_def_node.rb +3 -3
  23. data/lib/sass/tree/mixin_node.rb +2 -2
  24. data/lib/sass/tree/node.rb +8 -0
  25. data/lib/sass/tree/prop_node.rb +17 -16
  26. data/lib/sass/tree/rule_node.rb +2 -2
  27. data/lib/sass/tree/variable_node.rb +1 -1
  28. data/lib/sass/tree/while_node.rb +1 -1
  29. data/test/sass/conversion_test.rb +47 -0
  30. data/test/sass/scss/css_test.rb +3 -3
  31. data/test/sass/scss/scss_test.rb +40 -0
  32. metadata +2 -37
  33. data/test/haml/spec/README.md +0 -97
  34. data/test/haml/spec/lua_haml_spec.lua +0 -30
  35. data/test/haml/spec/ruby_haml_test.rb +0 -19
  36. data/test/haml/spec/tests.json +0 -534
  37. data/vendor/fssm/LICENSE +0 -20
  38. data/vendor/fssm/README.markdown +0 -55
  39. data/vendor/fssm/Rakefile +0 -59
  40. data/vendor/fssm/VERSION.yml +0 -5
  41. data/vendor/fssm/example.rb +0 -9
  42. data/vendor/fssm/fssm.gemspec +0 -77
  43. data/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  44. data/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  45. data/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  46. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  47. data/vendor/fssm/lib/fssm/monitor.rb +0 -26
  48. data/vendor/fssm/lib/fssm/path.rb +0 -91
  49. data/vendor/fssm/lib/fssm/pathname.rb +0 -502
  50. data/vendor/fssm/lib/fssm/state/directory.rb +0 -57
  51. data/vendor/fssm/lib/fssm/state/file.rb +0 -24
  52. data/vendor/fssm/lib/fssm/support.rb +0 -63
  53. data/vendor/fssm/lib/fssm/tree.rb +0 -176
  54. data/vendor/fssm/lib/fssm.rb +0 -33
  55. data/vendor/fssm/profile/prof-cache.rb +0 -40
  56. data/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  57. data/vendor/fssm/profile/prof-pathname.rb +0 -68
  58. data/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  59. data/vendor/fssm/profile/prof.html +0 -2379
  60. data/vendor/fssm/spec/path_spec.rb +0 -75
  61. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  62. data/vendor/fssm/spec/root/file.css +0 -0
  63. data/vendor/fssm/spec/root/file.rb +0 -0
  64. data/vendor/fssm/spec/root/file.yml +0 -0
  65. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  66. data/vendor/fssm/spec/spec_helper.rb +0 -14
@@ -1,77 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{fssm}
8
- s.version = "0.1.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Travis Tilley"]
12
- s.date = %q{2010-01-30}
13
- s.description = %q{file system state monitor}
14
- s.email = %q{ttilley@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.markdown"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.markdown",
24
- "Rakefile",
25
- "VERSION.yml",
26
- "example.rb",
27
- "fssm.gemspec",
28
- "lib/fssm.rb",
29
- "lib/fssm/backends/fsevents.rb",
30
- "lib/fssm/backends/inotify.rb",
31
- "lib/fssm/backends/polling.rb",
32
- "lib/fssm/backends/rubycocoa/fsevents.rb",
33
- "lib/fssm/monitor.rb",
34
- "lib/fssm/path.rb",
35
- "lib/fssm/pathname.rb",
36
- "lib/fssm/state/directory.rb",
37
- "lib/fssm/state/file.rb",
38
- "lib/fssm/support.rb",
39
- "lib/fssm/tree.rb",
40
- "profile/prof-cache.rb",
41
- "profile/prof-fssm-pathname.html",
42
- "profile/prof-pathname.rb",
43
- "profile/prof-plain-pathname.html",
44
- "profile/prof.html",
45
- "spec/path_spec.rb",
46
- "spec/root/duck/quack.txt",
47
- "spec/root/file.css",
48
- "spec/root/file.rb",
49
- "spec/root/file.yml",
50
- "spec/root/moo/cow.txt",
51
- "spec/spec_helper.rb"
52
- ]
53
- s.homepage = %q{http://github.com/ttilley/fssm}
54
- s.rdoc_options = ["--charset=UTF-8"]
55
- s.require_paths = ["lib"]
56
- s.rubygems_version = %q{1.3.5}
57
- s.summary = %q{file system state monitor}
58
- s.test_files = [
59
- "spec/path_spec.rb",
60
- "spec/root/file.rb",
61
- "spec/spec_helper.rb"
62
- ]
63
-
64
- if s.respond_to? :specification_version then
65
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
66
- s.specification_version = 3
67
-
68
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
69
- s.add_development_dependency(%q<rspec>, [">= 0"])
70
- else
71
- s.add_dependency(%q<rspec>, [">= 0"])
72
- end
73
- else
74
- s.add_dependency(%q<rspec>, [">= 0"])
75
- end
76
- end
77
-
@@ -1,36 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'rubycocoa/fsevents')
2
-
3
- module FSSM::Backends
4
- class FSEvents
5
- def initialize
6
- @handlers = {}
7
- @fsevents = []
8
- end
9
-
10
- def add_handler(handler, preload=true)
11
- @handlers[handler.path.to_s] = handler
12
-
13
- fsevent = Rucola::FSEvents.new(handler.path.to_s, {:latency => 0.5}) do |events|
14
- events.each do |event|
15
- handler.refresh(event.path)
16
- end
17
- end
18
-
19
- fsevent.create_stream
20
- handler.refresh(nil, true) if preload
21
- fsevent.start
22
- @fsevents << fsevent
23
- end
24
-
25
- def run
26
- begin
27
- OSX.CFRunLoopRun
28
- rescue Interrupt
29
- @fsevents.each do |fsev|
30
- fsev.stop
31
- end
32
- end
33
- end
34
-
35
- end
36
- end
@@ -1,26 +0,0 @@
1
- module FSSM::Backends
2
- class Inotify
3
- def initialize
4
- @notifier = INotify::Notifier.new
5
- end
6
-
7
- def add_handler(handler, preload=true)
8
- @notifier.watch(handler.path.to_s, :recursive, :attrib, :modify, :create,
9
- :delete, :delete_self, :moved_from, :moved_to, :move_self) do |event|
10
- path = FSSM::Pathname.for(event.absolute_name)
11
- path = path.dirname unless event.name == "" # Event on root directory
12
- handler.refresh(path)
13
- end
14
-
15
- handler.refresh(nil, true) if preload
16
- end
17
-
18
- def run
19
- begin
20
- @notifier.run
21
- rescue Interrupt
22
- end
23
- end
24
-
25
- end
26
- end
@@ -1,25 +0,0 @@
1
- module FSSM::Backends
2
- class Polling
3
- def initialize(options={})
4
- @handlers = []
5
- @latency = options[:latency] || 1.5
6
- end
7
-
8
- def add_handler(handler, preload=true)
9
- handler.refresh(nil, true) if preload
10
- @handlers << handler
11
- end
12
-
13
- def run
14
- begin
15
- loop do
16
- start = Time.now.to_f
17
- @handlers.each {|handler| handler.refresh}
18
- nap_time = @latency - (Time.now.to_f - start)
19
- sleep nap_time if nap_time > 0
20
- end
21
- rescue Interrupt
22
- end
23
- end
24
- end
25
- end
@@ -1,131 +0,0 @@
1
- OSX.require_framework '/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework'
2
-
3
- module Rucola
4
- class FSEvents
5
- class FSEvent
6
- attr_reader :fsevents_object
7
- attr_reader :id
8
- attr_reader :path
9
-
10
- def initialize(fsevents_object, id, path)
11
- @fsevents_object, @id, @path = fsevents_object, id, path
12
- end
13
-
14
- # Returns an array of the files/dirs in the path that the event occurred in.
15
- # The files are sorted by the modification time, the first entry is the last modified file.
16
- def files
17
- Dir.glob("#{File.expand_path(path)}/*").sort_by {|f| File.mtime(f) }.reverse
18
- end
19
-
20
- # Returns the last modified file in the path that the event occurred in.
21
- def last_modified_file
22
- files.first
23
- end
24
- end
25
-
26
- class StreamError < StandardError;
27
- end
28
-
29
- attr_reader :paths
30
- attr_reader :stream
31
-
32
- attr_accessor :allocator
33
- attr_accessor :context
34
- attr_accessor :since
35
- attr_accessor :latency
36
- attr_accessor :flags
37
-
38
- # Initializes a new FSEvents `watchdog` object and starts watching the directories you specify for events. The
39
- # block is used as a handler for events, which are passed as the block's argument. This method is the easiest
40
- # way to start watching some directories if you don't care about the details of setting up the event stream.
41
- #
42
- # Rucola::FSEvents.start_watching('/tmp') do |events|
43
- # events.each { |event| log.debug("#{event.files.inspect} were changed.") }
44
- # end
45
- #
46
- # Rucola::FSEvents.start_watching('/var/log/system.log', '/var/log/secure.log', :since => last_id, :latency => 5) do
47
- # Growl.notify("Something was added to your log files!")
48
- # end
49
- #
50
- # Note that the method also returns the FSEvents object. This enables you to control the event stream if you want to.
51
- #
52
- # fsevents = Rucola::FSEvents.start_watching('/Volumes') do |events|
53
- # events.each { |event| Growl.notify("Volume changes: #{event.files.to_sentence}") }
54
- # end
55
- # fsevents.stop
56
- def self.start_watching(*params, &block)
57
- fsevents = new(*params, &block)
58
- fsevents.create_stream
59
- fsevents.start
60
- fsevents
61
- end
62
-
63
- # Creates a new FSEvents `watchdog` object. You can specify a list of paths to watch and options to control the
64
- # behaviour of the watchdog. The block you pass serves as a callback when an event is generated on one of the
65
- # specified paths.
66
- #
67
- # fsevents = FSEvents.new('/etc/passwd') { Mailer.send_mail("Someone touched the password file!") }
68
- # fsevents.create_stream
69
- # fsevents.start
70
- #
71
- # fsevents = FSEvents.new('/home/upload', :since => UploadWatcher.last_event_id) do |events|
72
- # events.each do |event|
73
- # UploadWatcher.last_event_id = event.id
74
- # event.files.each do |file|
75
- # UploadWatcher.logfile.append("#{file} was changed")
76
- # end
77
- # end
78
- # end
79
- #
80
- # *:since: The service will report events that have happened after the supplied event ID. Never use 0 because that
81
- # will cause every fsevent since the "beginning of time" to be reported. Use OSX::KFSEventStreamEventIdSinceNow
82
- # if you want to receive events that have happened after this call. (Default: OSX::KFSEventStreamEventIdSinceNow).
83
- # You can find the ID's passed with :since in the events passed to your block.
84
- # *:latency: Number of seconds to wait until an FSEvent is reported, this allows the service to bundle events. (Default: 0.0)
85
- #
86
- # Please refer to the Cocoa documentation for the rest of the options.
87
- def initialize(*params, &block)
88
- raise ArgumentError, 'No callback block was specified.' unless block_given?
89
-
90
- options = params.last.kind_of?(Hash) ? params.pop : {}
91
- @paths = params.flatten
92
-
93
- paths.each { |path| raise ArgumentError, "The specified path (#{path}) does not exist." unless File.exist?(path) }
94
-
95
- @allocator = options[:allocator] || OSX::KCFAllocatorDefault
96
- @context = options[:context] || nil
97
- @since = options[:since] || OSX::KFSEventStreamEventIdSinceNow
98
- @latency = options[:latency] || 0.0
99
- @flags = options[:flags] || 0
100
- @stream = options[:stream] || nil
101
-
102
- @user_callback = block
103
- @callback = Proc.new do |stream, client_callback_info, number_of_events, paths_pointer, event_flags, event_ids|
104
- paths_pointer.regard_as('*')
105
- events = []
106
- number_of_events.times {|i| events << Rucola::FSEvents::FSEvent.new(self, event_ids[i], paths_pointer[i]) }
107
- @user_callback.call(events)
108
- end
109
- end
110
-
111
- # Create the stream.
112
- # Raises a Rucola::FSEvents::StreamError if the stream could not be created.
113
- def create_stream
114
- @stream = OSX.FSEventStreamCreate(@allocator, @callback, @context, @paths, @since, @latency, @flags)
115
- raise(StreamError, 'Unable to create FSEvents stream.') unless @stream
116
- OSX.FSEventStreamScheduleWithRunLoop(@stream, OSX.CFRunLoopGetCurrent, OSX::KCFRunLoopDefaultMode)
117
- end
118
-
119
- # Start the stream.
120
- # Raises a Rucola::FSEvents::StreamError if the stream could not be started.
121
- def start
122
- raise(StreamError, 'Unable to start FSEvents stream.') unless OSX.FSEventStreamStart(@stream)
123
- end
124
-
125
- # Stop the stream.
126
- # You can resume it by calling `start` again.
127
- def stop
128
- OSX.FSEventStreamStop(@stream)
129
- end
130
- end
131
- end
@@ -1,26 +0,0 @@
1
- class FSSM::Monitor
2
- def initialize(options={})
3
- @options = options
4
- @backend = FSSM::Backends::Default.new
5
- end
6
-
7
- def path(*args, &block)
8
- path = FSSM::Path.new(*args)
9
- FSSM::Support.use_block(path, block)
10
-
11
- @backend.add_handler(FSSM::State::Directory.new(path))
12
- path
13
- end
14
-
15
- def file(*args, &block)
16
- path = FSSM::Path.new(*args)
17
- FSSM::Support.use_block(path, block)
18
-
19
- @backend.add_handler(FSSM::State::File.new(path))
20
- path
21
- end
22
-
23
- def run
24
- @backend.run
25
- end
26
- end
@@ -1,91 +0,0 @@
1
- class FSSM::Path
2
- def initialize(path=nil, glob=nil, &block)
3
- set_path(path || '.')
4
- set_glob(glob || '**/*')
5
- init_callbacks
6
-
7
- if block_given?
8
- if block.arity == 1
9
- block.call(self)
10
- else
11
- self.instance_eval(&block)
12
- end
13
- end
14
- end
15
-
16
- def to_s
17
- @path.to_s
18
- end
19
-
20
- def to_pathname
21
- @path
22
- end
23
-
24
- def glob(value=nil)
25
- return @glob if value.nil?
26
- set_glob(value)
27
- end
28
-
29
- def create(callback_or_path=nil, &block)
30
- callback_action(:create, (block_given? ? block : callback_or_path))
31
- end
32
-
33
- def update(callback_or_path=nil, &block)
34
- callback_action(:update, (block_given? ? block : callback_or_path))
35
- end
36
-
37
- def delete(callback_or_path=nil, &block)
38
- callback_action(:delete, (block_given? ? block : callback_or_path))
39
- end
40
-
41
- private
42
-
43
- def init_callbacks
44
- do_nothing = lambda {|base, relative|}
45
- @callbacks = Hash.new(do_nothing)
46
- end
47
-
48
- def callback_action(type, arg=nil)
49
- if arg.is_a?(Proc)
50
- set_callback(type, arg)
51
- elsif arg.nil?
52
- get_callback(type)
53
- else
54
- run_callback(type, arg)
55
- end
56
- end
57
-
58
- def set_callback(type, arg)
59
- raise ArgumentError, "Proc expected" unless arg.is_a?(Proc)
60
- @callbacks[type] = arg
61
- end
62
-
63
- def get_callback(type)
64
- @callbacks[type]
65
- end
66
-
67
- def run_callback(type, arg)
68
- base, relative = split_path(arg)
69
-
70
- begin
71
- @callbacks[type].call(base, relative)
72
- rescue Exception => e
73
- raise FSSM::CallbackError, "#{type} - #{base.join(relative)}: #{e.message}", e.backtrace
74
- end
75
- end
76
-
77
- def split_path(path)
78
- path = FSSM::Pathname.for(path)
79
- [@path, (path.relative? ? path : path.relative_path_from(@path))]
80
- end
81
-
82
- def set_path(path)
83
- path = FSSM::Pathname.for(path)
84
- raise FSSM::FileNotFoundError, "No such file or directory - #{path}" unless path.exist?
85
- @path = path.expand_path
86
- end
87
-
88
- def set_glob(glob)
89
- @glob = glob.is_a?(Array) ? glob : [glob]
90
- end
91
- end