light_markuz 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dcc9c23f4b252d24869526b54064a2f38df96c28
4
+ data.tar.gz: e8371eb15596d0e47bfcefb0258bdf30bf8df633
5
+ SHA512:
6
+ metadata.gz: 8a75213655848a94d25bd5708f0f94a9eb07997b7b68eb84b6d7cf1ad2e94dc9b91d115da1f771181be2d7cf5c54085c1710813e1fe3d604dc22a083f9e994a3
7
+ data.tar.gz: ea960578d9cc3a9bd5e62f2207d4187838712266bd4e8730a0f5e534f81f5951c8d3bec605bae81fe0651e83f07a6dd0b564cbf07cd916e24a6809d6e895dfbb
data/Gemfile ADDED
File without changes
File without changes
@@ -0,0 +1,27 @@
1
+ # LightMarkuz
2
+
3
+ LightMarkuz is a template language that exports to HTML and PDF
4
+
5
+ ## How to use
6
+
7
+ ### In command line
8
+
9
+ ```
10
+ lightmarkuz inputFile.lmz -o outFile.html -w
11
+ ```
12
+
13
+ - The output file is behind the argument `-o`
14
+ - The output file can be a PDF
15
+ - The argument `-w` is use to watch the input file
16
+ - You can add the `-css` argument to add a css file
17
+
18
+ ### Ruby API
19
+
20
+ ```ruby
21
+ require 'light_markuz'
22
+ LightMarkuz.new ["input.lmz", "-o", "outPDF.pdf", "-w"]
23
+ # Automatically it is going to generate the file outPDF.pdf
24
+ ```
25
+
26
+ ## Known issues
27
+ 1. The images with a relative url don't charge in PDF
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.push(File.expand_path("../lib"))
4
+
5
+ require 'light_markuz'
6
+
7
+ LightMarkuz.new nil
@@ -0,0 +1,24 @@
1
+ @charset "UTF-8";
2
+
3
+ @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
4
+
5
+ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Lato', sans-serif; width: auto; line-height: 1.5em; }
6
+
7
+ @media screen { body { margin: 3.25% 5%; width: auto; } }
8
+
9
+ h1 { text-align: center; width: auto; margin: 2.5vh 0; border-bottom: 1px solid #000; color: #000; font-variant: small-caps; }
10
+
11
+ h2, h3 { text-align: left; }
12
+
13
+ p { margin: .75% 6.5%; text-align: justify; text-indent: 1cm; }
14
+
15
+ img { width: 14em; margin: 2.5vmax; float: right; }
16
+
17
+ li { margin: .75% 9.75%; list-style-type: disc; list-style-position: inside; }
18
+ li.indent { margin: .75% 14.25%; }
19
+
20
+ h2 { margin: .75% 0; color: #333; font-variant: small-caps; }
21
+
22
+ h3 { font-style: italic; margin: .75% 3.25%; color: #666; }
23
+
24
+ a { text-decoration: none; color: #22A7F0; }
@@ -0,0 +1,112 @@
1
+ require 'date'
2
+ require 'colorize'
3
+ require 'filewatcher'
4
+ require 'pdfkit'
5
+
6
+ class LightMarkuz
7
+
8
+ VERSION = '0.1.1'
9
+
10
+ attr_accessor :urlInFile,
11
+ :urlOutFile,
12
+ :fileData,
13
+ :cssFile,
14
+ :outFileExtension
15
+
16
+ def initialize arrArgs
17
+
18
+ if arrArgs == nil
19
+
20
+ self.urlInFile = ARGV.grep( /\b.*\.lmz/ )[0]
21
+ raise "You must declare a input file".colorize(:red).bold if self.urlInFile == nil
22
+ self.urlOutFile = ARGV[ ARGV.index("-o") + 1] if ARGV.include? "-o"
23
+ self.outFileExtension = File.extname self.urlOutFile if ARGV.include? "-o"
24
+ self.cssFile = "#{File.expand_path(File.dirname(__FILE__))}/defaultStyle.css"
25
+ self.cssFile = ARGV[ ARGV.index("-css") + 1] if ARGV.include? "-css"
26
+
27
+ self.compileLightMarkuz
28
+
29
+ puts "Convert file #{File.basename(self.urlInFile)}".colorize(:green).bold, "Thanks for use LightMarkuz!".colorize(:cyan).bold unless (ARGV.include? "-w") || (ARGV.include? "--watch")
30
+
31
+ puts "Watching file #{File.basename(self.urlInFile)}".bold if (ARGV.include? "-w") || (ARGV.include? "--watch")
32
+ self.watchFile if (ARGV.include? "-w") || (ARGV.include? "--watch")
33
+
34
+ else
35
+
36
+ self.urlInFile = arrArgs.grep( /\b.*\.lmz/ )[0]
37
+ raise "You must declare a input file".colorize(:red).bold if self.urlInFile == nil
38
+ self.urlOutFile = arrArgs[ arrArgs.index("-o") + 1] if arrArgs.include? "-o"
39
+ self.outFileExtension = File.extname self.urlOutFile if ARGV.include? "-o"
40
+ self.cssFile = "#{File.expand_path(File.dirname(__FILE__))}/defaultStyle.css"
41
+ self.cssFile = arrArgs[ arrArgs.index("-css") + 1] if arrArgs.include? "-css"
42
+
43
+ self.compileLightMarkuz
44
+
45
+ puts "Convert file #{File.basename(self.urlInFile)}".colorize(:green).bold, "Thanks for use LightMarkuz!".colorize(:cyan).bold unless (arrArgs.include? "-w") || (arrArgs.include? "--watch")
46
+
47
+ puts "Watching file #{File.basename(self.urlInFile)}".bold if (arrArgs.include? "-w") || (arrArgs.include? "--watch")
48
+ self.watchFile if (arrArgs.include? "-w") || (arrArgs.include? "--watch")
49
+
50
+ end
51
+
52
+ end
53
+
54
+ def compileLightMarkuz
55
+
56
+ self.fileData = IO.readlines self.urlInFile unless self.urlInFile == nil
57
+ self.fileData.unshift "<meta charset='utf-8'/>\n<link rel='stylesheet' type='text/css' href='#{self.cssFile}' />\n"
58
+ self.fileData = self.fileData * ""
59
+
60
+ regExes = {
61
+
62
+ body: [/\A(.*)\z/m, "<body>\n\\1\n</body>"],
63
+ img: [/\bimg\((.*?)\)/, "<img src='\\1'>"],
64
+ h1: [/^# (.*)$/, "<h1>\\1</h1>"],
65
+ h2: [/^## (.*)$/, "<h2>\\1</h2>"],
66
+ h3: [/^### (.*)$/, "<h3>\\1</h3>"],
67
+ li: [/^[\*|\-] (.*?)$/, "<li>\\1</li>"],
68
+ l2: [/^\t*[\*|\-] (.*?)$/, "<li class='indent'>\\1</li>"],
69
+ p: [/^(\w.*)$/, "<p>\\1</p>"],
70
+ b: [/\bb\((.*?)\)/, "<strong>\\1</strong>"],
71
+ i: [/\bi\((.*?)\)/, "<i>\\1</i>"],
72
+ u: [/\bu\((.*?)\)/, "<u>\\1</u>"],
73
+ s: [/\bs\((.*?)\)/, "<s>\\1</s>"],
74
+ a: [/\ba\((.*?) ?\| ?(.*?)\)/, "<a href='\\2'>\\1</a>"],
75
+
76
+ }
77
+
78
+ for index, regEx in regExes
79
+
80
+ self.fileData.gsub!(regEx[0], regEx[1])
81
+
82
+ end
83
+
84
+ rootUrl = "#{File.expand_path(File.dirname(self.urlInFile))}"
85
+
86
+ IO.write self.urlOutFile, self.fileData if (self.urlOutFile != nil) && (self.outFileExtension == ".html")
87
+ PDFKit.new(self.fileData, { page_size: 'A4'}).to_file(self.urlOutFile) if (self.urlOutFile != nil) && (self.outFileExtension == ".pdf")
88
+
89
+ end
90
+
91
+ def watchFile
92
+
93
+ FileWatcher.new(urlInFile).watch() do |file, event|
94
+
95
+ case event
96
+ when :deleted
97
+
98
+ puts "\n\tGoodbye!\n".colorize(:blue).bold.on_red
99
+ exit
100
+
101
+ when :changed
102
+
103
+ compileLightMarkuz
104
+ print "\t[%02i:%02i]".bold % [Time.now.hour, Time.now.min], "\t>> File #{File.basename(self.urlInFile)} changed".colorize(:blue).bold, "\n"
105
+
106
+ end
107
+
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $:.push File.expand_path("../lib", __FILE__)
4
+
5
+ require 'light_markuz'
6
+
7
+ Gem::Specification.new do |s|
8
+
9
+ s.name = 'light_markuz'
10
+ s.version = LightMarkuz::VERSION
11
+ s.date = '2016-05-14'
12
+ s.summary = "LightMarkuz!"
13
+ s.description = "A template language that exported to HTML and PDF"
14
+ s.authors = ["Daviz"]
15
+ s.email = 'roman.daco.st@gmail.com'
16
+ s.homepage = 'http://rubygems.org/gems/light_markuz'
17
+ s.license = 'MIT'
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map!{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency 'colorize', '~> 0.7.7'
24
+ s.add_dependency 'filewatcher', '~> 0.5.3'
25
+ s.add_dependency 'pdfkit', '~> 0.8.2'
26
+
27
+ end
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: light_markuz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Daviz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: filewatcher
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.5.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.5.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: pdfkit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.2
55
+ description: A template language that exported to HTML and PDF
56
+ email: roman.daco.st@gmail.com
57
+ executables:
58
+ - lightmarkuz
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - Gemfile
63
+ - LICENSE.txt
64
+ - README.md
65
+ - bin/lightmarkuz
66
+ - lib/defaultStyle.css
67
+ - lib/light_markuz.rb
68
+ - light_markuz.gemspec
69
+ homepage: http://rubygems.org/gems/light_markuz
70
+ licenses:
71
+ - MIT
72
+ metadata: {}
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ requirements: []
88
+ rubyforge_project:
89
+ rubygems_version: 2.5.1
90
+ signing_key:
91
+ specification_version: 4
92
+ summary: LightMarkuz!
93
+ test_files: []