nimbu 0.1.2 → 0.2

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.
@@ -1,6 +1,8 @@
1
1
  require "nimbu/command/base"
2
2
  require "nimbu/server/base"
3
3
  require 'term/ansicolor'
4
+ require 'compass'
5
+ require 'compass/exec'
4
6
 
5
7
  # running a local server to speed up designing Nimbu themes
6
8
  #
@@ -15,8 +17,128 @@ class Nimbu::Command::Server < Nimbu::Command::Base
15
17
  if !Nimbu::Auth.read_configuration && !Nimbu::Auth.read_credentials
16
18
  print red(bold("ERROR")), ": this directory does not seem to contain any Nimbu theme or your credentials are not set. \n ==> Run \"", bold { "nimbu init"}, "\" to initialize this directory."
17
19
  else
18
- puts "Starting the server..."
19
- Nimbu::Server::Base.run!
20
+ server_pid = fork do
21
+ puts "Starting the server..."
22
+ Nimbu::Server::Base.run!
23
+ end
24
+ haml_pid = fork do
25
+ puts "Watching haml files..."
26
+ HamlWatcher.watch
27
+ end
28
+ compass_pid = fork do
29
+ puts "Watching compass files..."
30
+ Compass::Exec::SubCommandUI.new(["watch","."]).run!
31
+ end
32
+
33
+ Process.wait(server_pid)
34
+ Process.wait(haml_pid)
35
+ Process.wait(compass_pid)
36
+
37
+ end
38
+ end
39
+ end
40
+
41
+ require 'rubygems'
42
+ require 'fssm'
43
+ require 'haml'
44
+
45
+ class HamlWatcher
46
+ class << self
47
+ include Term::ANSIColor
48
+
49
+ def watch
50
+ refresh
51
+ puts ">>> HamlWatcher is watching for changes. Press Ctrl-C to Stop."
52
+ FSSM.monitor('haml', '**/*.haml') do
53
+ update do |base, relative|
54
+ puts ">>> Change detected to: #{relative}"
55
+ HamlWatcher.compile(relative)
56
+ end
57
+ create do |base, relative|
58
+ puts ">>> File created: #{relative}"
59
+ HamlWatcher.compile(relative)
60
+ end
61
+ delete do |base, relative|
62
+ puts ">>> File deleted: #{relative}"
63
+ HamlWatcher.remove(relative)
64
+ end
65
+ end
66
+ end
67
+
68
+ def output_file(filename)
69
+ # './haml' retains the base directory structure
70
+ filename.gsub(/\.html\.haml$/,'.html').gsub(/\.liquid\.haml$/,'.liquid')
71
+ end
72
+
73
+ def remove(file)
74
+ output = output_file(file)
75
+ File.delete output
76
+ puts "\033[0;31m remove\033[0m #{output}"
77
+ end
78
+
79
+ def compile(file)
80
+ begin
81
+ output_file_name = output_file(file)
82
+ origin = File.open(File.join('haml', file)).read
83
+ result = Haml::Engine.new(origin).render
84
+ raise "Nothing rendered!" if result.empty?
85
+ # Write rendered HTML to file
86
+ color, action = File.exist?(output_file_name) ? [33, 'overwrite'] : [32, ' create']
87
+ puts "\033[0;#{color}m#{action}\033[0m #{output_file_name}"
88
+ FileUtils.mkdir_p(File.dirname(output_file_name))
89
+ File.open(output_file_name,'w') {|f| f.write(result)}
90
+ rescue Exception => e
91
+ print red("#{plainError e, file}\n")
92
+ output_file_name = output_file(file)
93
+ result = goHere(e, file)
94
+ File.open(output_file_name,'w') {|f| f.write(result)} if File::exists?(output_file_name)
95
+ end
96
+ end
97
+
98
+ # Check that all haml templates have been rendered.
99
+ def refresh
100
+ Dir.glob('haml/**/*.haml').each do |file|
101
+ file.gsub!(/^haml\//, '')
102
+ compile(file) unless File.exist?(output_file(file))
103
+ end
104
+ end
105
+
106
+ def goHere(message, nameoffile)
107
+ @messag = ""
108
+ #@messag += "<html><head><title>ERROR IN CODE</title>"
109
+ #CSS for error styling.
110
+ @messag += "<style type = \"text/css\">"
111
+ @messag +="body { background-color: #fff; margin: 40px; font-family: Lucida Grande, Verdana, Sans-serif; font-size: 12px; color: #000;}"
112
+ @messag +="#content { border: #999 1px solid; background-color: #fff; padding: 20px 20px 12px 20px;}"
113
+ @messag +="h1 { font-weight: normal; font-size: 14px; color: #990000; margin: 0 0 4px 0; }"
114
+ @messag += "</style>"
115
+ @messag += "<div id=\"content\">"
116
+ @messag += "<h1>You have an Error in your HAML code </h1>"
117
+ @messag += "<p>#{message} </p>"
118
+ @messag += "<p>On Line : #{get_line message}.</p>"
119
+ @messag += "<p>In file location: <strong>#{nameoffile}</strong></p>"
120
+ @messag += "</div>"
121
+ return @messag
122
+ end
123
+
124
+ def get_line(exception)
125
+ # SyntaxErrors have weird line reporting
126
+ # when there's trailing whitespace,
127
+ # which there is for Haml documents.
128
+ return (exception.message.scan(/:(\d+)/).first || ["??"]).first if exception.is_a?(::SyntaxError)
129
+ (exception.backtrace[0].scan(/:(\d+)/).first || ["??"]).first
130
+ end
131
+
132
+ def plainError(message, nameoffile)
133
+ @plainMessage = ""
134
+ @plainMessage += "Error: #{message} \n"
135
+ @plainMessage += "Line number #{get_line message} "
136
+ @plainMessage += "File error detected: #{nameoffile}"
137
+ return @plainMessage
138
+ end
139
+
140
+ def sassErrorLine message
141
+ return message
20
142
  end
21
143
  end
22
144
  end
@@ -1,3 +1,3 @@
1
1
  module Nimbu
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nimbu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-24 00:00:00.000000000 Z
12
+ date: 2012-02-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: term-ansicolor
16
- requirement: &70322002873140 !ruby/object:Gem::Requirement
16
+ requirement: &70143971766620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70322002873140
24
+ version_requirements: *70143971766620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70322003251940 !ruby/object:Gem::Requirement
27
+ requirement: &70143971766080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.6.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70322003251940
35
+ version_requirements: *70143971766080
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: launchy
38
- requirement: &70322003229180 !ruby/object:Gem::Requirement
38
+ requirement: &70143971765600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.3.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70322003229180
46
+ version_requirements: *70143971765600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rubyzip
49
- requirement: &70322003217740 !ruby/object:Gem::Requirement
49
+ requirement: &70143971765140 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70322003217740
57
+ version_requirements: *70143971765140
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sinatra
60
- requirement: &70322003208920 !ruby/object:Gem::Requirement
60
+ requirement: &70143971764540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,40 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70322003208920
68
+ version_requirements: *70143971764540
69
+ - !ruby/object:Gem::Dependency
70
+ name: compass
71
+ requirement: &70143971763980 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *70143971763980
80
+ - !ruby/object:Gem::Dependency
81
+ name: haml
82
+ requirement: &70143971762860 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70143971762860
91
+ - !ruby/object:Gem::Dependency
92
+ name: fssm
93
+ requirement: &70143971762380 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70143971762380
69
102
  description: Client library and command-line tool to design and manage websites on
70
103
  the Nimbu platform.
71
104
  email: