code2html 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 (5) hide show
  1. data/CHANGELOG +2 -0
  2. data/README.rdoc +12 -0
  3. data/bin/code2html +20 -0
  4. data/lib/htmlclipboard.rb +69 -0
  5. metadata +72 -0
@@ -0,0 +1,2 @@
1
+ = 0.0.1 - 2010-03-30
2
+ * Created the program to convert source code and copy to the clipboard for easy pasting of formatted text.
@@ -0,0 +1,12 @@
1
+ = Code2Html
2
+
3
+ Author:: Ed Botzum (mailto:ed.botzum@siemens.com)
4
+ Copyright:: Copyright (c) 2010 edbotz
5
+ License:: GPL
6
+ Version:: 0.0.1
7
+
8
+ Uses CodeRay to read in a source code file, convert it to html
9
+ and copy it to the clipboard in Windows.
10
+
11
+ ==TODOS:
12
+ * Support for the mac.
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'coderay'
4
+ require 'win32/clipboard'
5
+ require File.join(File.dirname(__FILE__), *%w[../lib/htmlclipboard])
6
+
7
+ include Win32
8
+
9
+ # gather the file information
10
+ code_file_name = ARGV[0]
11
+ code_file = File.new( code_file_name, 'r' )
12
+ extension = File.extname( code_file_name ).gsub( /\./, '' )
13
+ out_file_name = File.basename( code_file_name, ".#{extension}" ) << ".html"
14
+
15
+ # Convert Extensions for CodeRay
16
+ extension = 'ruby' if extension == 'rb'
17
+
18
+ # Create the html
19
+ code = CodeRay.scan( code_file.read, extension )
20
+ Clipboard.set_html_data( code.html( :line_numbers => :inline, :wrap => :page ) )
@@ -0,0 +1,69 @@
1
+ #
2
+ # htmlclipboard.rb
3
+ # by John Allen
4
+ # http://johnallen.us/?p=289
5
+ #
6
+ module Win32
7
+ class Clipboard
8
+
9
+ @cfHTML = nil
10
+
11
+ def self.registerHTML
12
+ if not @cfHTML
13
+ @cfHTML = Win32::Clipboard.RegisterClipboardFormat("HTML Format")
14
+ end
15
+ end
16
+
17
+ =begin
18
+ zeroFmt(nbr)
19
+ -- Takes a number and formats with zero's in front.
20
+ 1234 => "0000001234"
21
+ 23 => "0000000023"
22
+ =end
23
+ def self.zeroFmt(nbr)
24
+ zeros = "0"*10
25
+ len = nbr.to_s.length # this is the number of digits in the number 2784 => 4
26
+ return zeros.slice(0..(zeros.length - len - 1)) + nbr.to_s
27
+ end
28
+
29
+ def self.set_html_data(clip_data)
30
+ sDataStart = "<HTML><BODY>\n<!--StartFragment -->"
31
+ sDataEnd = "<!--EndFragment -->\n</BODY></HTML>"
32
+ sData = ""
33
+ #
34
+ # Clipboard Header: looks like ->
35
+ # Version: 1.0
36
+ # StartHTML:0000000000
37
+ # EndHTML:0000000000
38
+ # StartFragment:0000000000
39
+ # EndFragment:0000000000
40
+ sDataHdr = "Version:1.0\r\nStartHTML:aaaaaaaaaa\r\nEndHTML:bbbbbbbbbb\r\n"
41
+ sDataHdr += "StartFragment:cccccccccc\r\nEndFragment:dddddddddd\r\n"
42
+ sData = sDataHdr + sDataStart + clip_data + sDataEnd
43
+
44
+ sData = sData.gsub(/aaaaaaaaaa/) { zeroFmt(sDataHdr.length) }
45
+ sData = sData.gsub(/bbbbbbbbbb/) { zeroFmt(sData.length) }
46
+ sData = sData.gsub(/cccccccccc/) { zeroFmt(sDataHdr.length + sDataStart.length) }
47
+ sData = sData.gsub(/dddddddddd/) { zeroFmt(sDataHdr.length + sDataStart.length + clip_data.length) }
48
+
49
+ if not @cfHTML
50
+ self.registerHTML
51
+ end
52
+
53
+ self.open
54
+ EmptyClipboard()
55
+ hmem = GlobalAlloc(GHND, sData.length + 10)
56
+ mem = GlobalLock(hmem)
57
+ memcpy(mem, sData, sData.length)
58
+ begin
59
+ if SetClipboardData(@cfHTML, hmem) == 0
60
+ raise Error, "SetClipboardData() failed; " + get_last_error
61
+ end
62
+ ensure
63
+ GlobalFree(hmem)
64
+ self.close
65
+ end
66
+ self
67
+ end
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: code2html
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ed Botzum
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-03-30 00:00:00 -04:00
13
+ default_executable: opps
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: win32-clipboard
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.5.2
24
+ version:
25
+ description:
26
+ email: contact@edbotz.us
27
+ executables:
28
+ - code2html
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ - CHANGELOG
34
+ files:
35
+ - lib/htmlclipboard.rb
36
+ - README.rdoc
37
+ - CHANGELOG
38
+ has_rdoc: true
39
+ homepage:
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options:
44
+ - --main
45
+ - README.rdoc
46
+ - --template
47
+ - c:/ruby/lib/ruby/gems/1.8/gems/allison-2.0.3/lib/allison
48
+ - --line-numbers
49
+ - --inline-source
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.5
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: Code2Html utility.
71
+ test_files: []
72
+