light_markuz 0.1.1

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.
@@ -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: []