aml 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/aml.rb CHANGED
@@ -1,67 +1,142 @@
1
+ require 'aml/requirement'
1
2
  module AbstractMarkupLanguage
3
+ @basePath
4
+ @watchFile
5
+ @makeFile
6
+
2
7
  class Base
3
- @@args = {}
4
- @@args_original = ''
5
- @@watch = false
6
- @@p = false
8
+ def self.initialize(arguments, instance)
9
+ error = Error.new()
10
+ argument = Argument.new(arguments,error)
11
+ argument.required('watch','The required --watch argument has not been defined.')
12
+
13
+ if(argument.has_requirements? == false)
14
+ argument.clear_required
15
+ argument.required('build','The required --build argument has not been defined.')
16
+ if(argument.has_requirements?)
17
+ argument.clear_required
18
+ argument.create('watch',argument.read('build'))
19
+ argument.create('build','true')
20
+ end
21
+ else
22
+ argument.create('build','false')
23
+ end
24
+
25
+ if argument.has_requirements? and File.exist?(argument.read('watch'))
26
+ basePath = File.dirname(argument.read('watch'))
27
+ @basePath = basePath
28
+ watchFile = File.basename(argument.read('watch'))
29
+ @watchFile = watchFile
30
+ #AML Config Arguments
31
+ configFile = File.join(basePath,'aml-config')
32
+ argument.parse(File.read(configFile)) if File.exist?(configFile)
33
+ #Arguments
34
+ argument.create('watch',watchFile)
35
+ argument.create_if_empty('basePath',basePath)
36
+ argument.create_if_empty('fileExtension','html')
37
+ argument.create_if_empty('fileOutput',"#{File.basename(argument.read('watch'), ".*")}.#{argument.read('fileExtension')}")
38
+ argument.create_if_empty('selfClosing',"area,base,basefont,bgsound,br,col,frame,hr,img,isindex,input,keygen,link,meta,param,source,track,wbr")
39
+ argument.create_if_empty('sortAttribute','true')
40
+ argument.create_if_empty('singleQuote','false')
41
+ argument.create_if_empty('errorLimit','5')
42
+ argument.create_if_empty('aml-watch-instance', "#{instance}")
43
+
44
+ parse = Parse.new(argument.read('basePath'), argument.read('watch'))
45
+ files = []
7
46
 
8
- def self.initialize(arguments)
9
- log = Log.new('The following errors have occured:')
10
- argument = Argument.new(arguments)
11
- @@args_original = arguments
12
- argument.required('watch','The required --watch attribute has not been defined.')
13
- if(argument.has_requirements?)
14
- if File.exist?(argument.read('watch'))
15
- basePath = File.dirname(argument.read('watch'))
16
- argument.create('watch',"#{File.basename(argument.read('watch'))}")
17
- argument.create_if_empty('basePath',basePath)
18
- argument.create_if_empty('fileExtension','html')
19
- argument.create_if_empty('fileOutput',"#{File.basename(argument.read('watch'), ".*")}.#{argument.read('fileExtension')}")
20
- argument.create_if_empty('selfClosing',"area,base,basefont,bgsound,br,col,frame,hr,img,isindex,input,keygen,link,meta,param,source,track,wbr")
21
- argument.create_if_empty('sortAttribute','true')
22
- argument.create_if_empty('singleQuote','false')
23
- @@args = argument.hash
24
- @@p = Parse.new(@@args)
25
- process
47
+ parse.watch.each do |this|
48
+ file = File.join(basePath, this[:bundle] ? File.join(this[:bundle],'partial') : this[:partial] ? 'partial' : '' , this[:file])
49
+ files << file
50
+ end
51
+
52
+ #Define Core Bundle's Methods, Mixins, & Variables...
53
+ core_definition = false
54
+ if(File.exists?(File.join(File.dirname(File.expand_path(__FILE__)),'aml','core','mixin.aml')))
55
+ bundle = Parse.new(File.join(File.dirname(File.expand_path(__FILE__)), 'aml','core'),'mixin.aml')
56
+ definition = Definition.new(bundle.file,"core",false,true,true)
57
+ core_definition = true
26
58
  else
27
- log.add('The file to watch does not exist.')
28
- argument.missing_required.each do |message|
29
- log.add(message)
59
+ error.log('core',false,'mixin.aml',false,'file does not exist')
60
+ end
61
+ if(File.exists?(File.join(File.dirname(File.expand_path(__FILE__)),'aml','core','method.rb')))
62
+ begin
63
+ class_eval File.read(File.join(File.dirname(File.expand_path(__FILE__)),'aml','core','method.rb'))
64
+ rescue Exception => e
65
+ x = e.message.match(error.match)
66
+ error.log('core',false,"method.rb",x[:line],x[:message])
30
67
  end
31
- log.display
68
+ else
69
+ error.log('core',false,'method.rb',false,'file does not exist')
32
70
  end
33
- else
34
- argument.missing_required.each do |message|
35
- log.add(message)
71
+
72
+ #Define --watch Methods, Mixins, & Variables...
73
+ if core_definition
74
+ definition.add(parse.file,false,true,true,true)
75
+ else
76
+ definition = Definition.new(parse.file,false,true,true,true)
36
77
  end
37
- log.display
78
+
79
+ #Define Additional Bundle Methods & Mixins
80
+ definition.bundles.each do |directory,name|
81
+ if directory != 'core' then
82
+ if File.exists?(File.join(basePath,directory,'method.rb'))
83
+ begin
84
+ class_eval File.read(File.join(basePath,directory,'method.rb'))
85
+ rescue Exception => e
86
+ x = e.message.match(error.match)
87
+ error.log(directory,false,"method.rb",x[:line],x[:message])
88
+ end
89
+ else
90
+ error.log(directory,false,'method.rb',false,'file does not exist')
91
+ end
92
+ if File.exists?(File.join(basePath,directory,'mixin.aml'))
93
+ bundle = Parse.new(File.join(basePath,directory),'mixin.aml')
94
+ definition.add(bundle.file,directory,false,true,true)
95
+ else
96
+ error.log(directory,false,'mixin.aml',false,'file does not exist')
97
+ end
98
+ #Watch Additional Bundle Partials
99
+ Dir[File.join(basePath,directory,'partial','*.aml')].each do |partial|
100
+ files << partial
101
+ end
102
+ end
103
+ end
104
+
105
+ @makeFile = argument.read('fileOutput')
106
+ compile = Compile.new(parse,argument,definition,error)
107
+ if(error.count == 0)
108
+ error.log_delete
109
+ if argument.read('build') == 'false'
110
+ print "\r\b\e[0K#{Gem.loaded_specs['aml'].summary.to_s} is watching #{files.count-1} partial instance#{files.count-1 != 1 ? "s" : ""}""... (#{argument.read('aml-watch-instance').to_i+1}) "
111
+ watch = Watch.new(files, arguments, argument.read('aml-watch-instance').to_i+1, argument.read('build'))
112
+ else
113
+ puts "Build complete..."
114
+ end
115
+ else
116
+ error_count = error.count == 1 ? "" : "s"
117
+ if error.count <= argument.read('errorLimit').to_i
118
+ error.log_delete
119
+ puts error.output
120
+ else
121
+ error.log_create
122
+ print "\r\n#{error.count} error#{error_count} occured, please see error.log for details.\r\n"
123
+ end
124
+ end
125
+ else
126
+ puts "Please define the --watch or --build argument."
38
127
  end
39
128
  end
40
- def self.process
41
- file = []
42
- @@watch = Watch.new()
43
- parse = Parse.new(@@args)
44
- file << File.join(@@args[:basePath],@@args[:watch])
45
- parse.process_partials(File.join(@@args[:basePath],@@args[:watch])).each do |partial|
46
- partial_file = File.join(@@args[:basePath],"~","#{partial[:name]}.aml")
47
- file << partial_file if File.exist?(partial_file)
48
- end
49
- @@watch.process(file)
50
- message = "Watching #{file[0]}"
51
- message += " and #{file.count-1} partial" if file.count >= 2
52
- message += "s" if file.count >= 3
53
- message += "...\r\n"
54
- puts message
55
- @@watch.watch
129
+
130
+ def self.makeFile
131
+ @makeFile
132
+ end
133
+
134
+ def self.basePath
135
+ @basePath
56
136
  end
57
137
 
58
- def file_update(name)
59
- puts "updating #{@@args[:watch]} - #{name} has been updated..."
60
- @@p.init(File.join(@@args[:basePath],@@args[:watch]),@@args)
138
+ def self.watchFile
139
+ @watchFile
61
140
  end
62
141
  end
63
- end
64
- require 'aml/argument'
65
- require 'aml/log'
66
- require 'aml/watch'
67
- require 'aml/parse'
142
+ end
metadata CHANGED
@@ -1,29 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Esquivias
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-07 00:00:00.000000000 Z
11
+ date: 2013-07-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Abstract Markup Language is a robust and feature rich markup language
14
14
  designed to avoid repetition and promote clear, well-indented markup.
15
15
  email: daniel@aml-info.org
16
16
  executables:
17
17
  - aml
18
+ - aml-bundle
18
19
  extensions: []
19
20
  extra_rdoc_files: []
20
21
  files:
22
+ - bin/aml-bundle
23
+ - bin/aml
21
24
  - lib/aml.rb
25
+ - lib/aml-bundle.rb
26
+ - lib/aml/definition.rb
27
+ - lib/aml/error.rb
28
+ - lib/aml/core/method.rb
29
+ - lib/aml/core/mixin.aml
30
+ - lib/aml/parse.rb
22
31
  - lib/aml/argument.rb
23
- - lib/aml/log.rb
32
+ - lib/aml/line_type.rb
33
+ - lib/aml/make.rb
24
34
  - lib/aml/watch.rb
25
- - lib/aml/parse.rb
26
- - bin/aml
35
+ - lib/aml/compile.rb
36
+ - lib/aml/requirement.rb
27
37
  homepage: https://aml-info.org/
28
38
  licenses:
29
39
  - MIT
@@ -44,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
54
  version: '0'
45
55
  requirements: []
46
56
  rubyforge_project:
47
- rubygems_version: 2.0.0
57
+ rubygems_version: 2.0.7
48
58
  signing_key:
49
59
  specification_version: 4
50
60
  summary: Abstract Markup Language
data/lib/aml/log.rb DELETED
@@ -1,25 +0,0 @@
1
- class Log
2
-
3
- @@introduction = false
4
- @@message = []
5
-
6
- def initialize(introduction=false)
7
- @@introduction = introduction
8
- end
9
-
10
- def introduction(message)
11
- @@introduction = message
12
- end
13
-
14
- def add(message)
15
- @@message << message
16
- end
17
-
18
- def display(introduction=true)
19
- puts @@introduction if(@@introduction != false) and introduction
20
- @@message.each do |message|
21
- puts "- #{message}"
22
- end
23
- end
24
-
25
- end