phandoc 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/phandoc.rb +71 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f9584d9dab58847b233d613f1b5bd6eae594fd3
4
+ data.tar.gz: 52e0fa7dc5442f75e31fd1078086150ab3520001
5
+ SHA512:
6
+ metadata.gz: ac0b614ada0092d9f85cddc66480a547c8eadbe354ea868e1dd1f112cbb6eb2a512edf5fad96f535f3376cb1c4d0aa6aa651e4b2340cc008bc8a93406648a668
7
+ data.tar.gz: 7606d9be8880759725d8d044a856087adff5571be542ca951e36f994b8a0def4c33752dae78f19ef516948d0b44d5452d2ad348e0ff193bb71d55534d111dc23
data/lib/phandoc.rb ADDED
@@ -0,0 +1,71 @@
1
+ require 'phantomjs'
2
+ require 'tempfile'
3
+
4
+ class Phandoc
5
+ def initialize(html)
6
+ @html = html
7
+ end
8
+
9
+ def execute(code)
10
+ result = []
11
+
12
+ html_file = Tempfile.new('phantom_html')
13
+ js_file = Tempfile.new('phantom_js')
14
+ script_file = Tempfile.new('phantom_script')
15
+
16
+ begin
17
+ html_file.write(@html)
18
+ html_file.flush
19
+
20
+ js_file.write(code)
21
+ js_file.flush
22
+
23
+ script_file.write <<-JAVASCRIPT
24
+ var fs = require('fs');
25
+ var htmlContent = fs.read('#{html_file.path}');
26
+ var jsContent = fs.read('#{js_file.path}');
27
+
28
+ var webpage = require('webpage');
29
+ var page = webpage.create();
30
+
31
+ page.content = htmlContent;
32
+
33
+ var output = page.evaluate(function(script) {
34
+ return eval(script);
35
+ }, jsContent);
36
+
37
+ console.log(output);
38
+ console.log(page.content.replace(/^/mg, '[:PHANDOC_SOURCE:] '));
39
+
40
+ phantom.exit();
41
+ JAVASCRIPT
42
+ script_file.flush
43
+
44
+ html = []
45
+ Phantomjs.run(script_file.path) do |line|
46
+ if line.start_with?('[:PHANDOC_SOURCE:] ')
47
+ html << line.sub(/(^\[:PHANDOC_SOURCE:\] |\n$)/, '')
48
+ else
49
+ result << line.sub(/\n$/, '')
50
+ end
51
+ end
52
+
53
+ @html = html.join("\n")
54
+ ensure
55
+ html_file.close
56
+ html_file.unlink
57
+
58
+ js_file.close
59
+ js_file.unlink
60
+
61
+ script_file.close
62
+ script_file.unlink
63
+ end
64
+
65
+ result.join("\n")
66
+ end
67
+
68
+ def html
69
+ @html
70
+ end
71
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: phandoc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - greatghoul
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: phantomjs
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Javascript + DOM in your ruby, based on PhantomJS.
28
+ email: greatghoul@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/phandoc.rb
34
+ homepage: https://github.com/greatghoul/phandoc
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.2.2
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Javascript + DOM in your ruby, based on PhantomJS.
58
+ test_files: []