comment_extractor 1.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 (165) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +132 -0
  4. data/bin/comment_parser_debug +45 -0
  5. data/lib/comment_extractor/code_object/comment.rb +19 -0
  6. data/lib/comment_extractor/code_object.rb +12 -0
  7. data/lib/comment_extractor/code_objects.rb +46 -0
  8. data/lib/comment_extractor/configuration.rb +50 -0
  9. data/lib/comment_extractor/encoding.rb +40 -0
  10. data/lib/comment_extractor/extractor/c.rb +8 -0
  11. data/lib/comment_extractor/extractor/cc.rb +8 -0
  12. data/lib/comment_extractor/extractor/class.rb +8 -0
  13. data/lib/comment_extractor/extractor/clojure.rb +11 -0
  14. data/lib/comment_extractor/extractor/coffee.rb +13 -0
  15. data/lib/comment_extractor/extractor/concerns/simple_extractor.rb +189 -0
  16. data/lib/comment_extractor/extractor/concerns/slash_extractor.rb +16 -0
  17. data/lib/comment_extractor/extractor/cpp.rb +8 -0
  18. data/lib/comment_extractor/extractor/cs.rb +8 -0
  19. data/lib/comment_extractor/extractor/css.rb +8 -0
  20. data/lib/comment_extractor/extractor/cxx.rb +8 -0
  21. data/lib/comment_extractor/extractor/d.rb +9 -0
  22. data/lib/comment_extractor/extractor/erlang.rb +12 -0
  23. data/lib/comment_extractor/extractor/fortran.rb +11 -0
  24. data/lib/comment_extractor/extractor/go.rb +8 -0
  25. data/lib/comment_extractor/extractor/h.rb +8 -0
  26. data/lib/comment_extractor/extractor/haml.rb +49 -0
  27. data/lib/comment_extractor/extractor/haskell.rb +12 -0
  28. data/lib/comment_extractor/extractor/hpp.rb +8 -0
  29. data/lib/comment_extractor/extractor/html.rb +13 -0
  30. data/lib/comment_extractor/extractor/java.rb +8 -0
  31. data/lib/comment_extractor/extractor/java_script.rb +12 -0
  32. data/lib/comment_extractor/extractor/lisp.rb +11 -0
  33. data/lib/comment_extractor/extractor/lua.rb +12 -0
  34. data/lib/comment_extractor/extractor/m.rb +9 -0
  35. data/lib/comment_extractor/extractor/markdown.rb +7 -0
  36. data/lib/comment_extractor/extractor/mm.rb +8 -0
  37. data/lib/comment_extractor/extractor/perl.rb +12 -0
  38. data/lib/comment_extractor/extractor/php.rb +8 -0
  39. data/lib/comment_extractor/extractor/python.rb +13 -0
  40. data/lib/comment_extractor/extractor/ruby.rb +40 -0
  41. data/lib/comment_extractor/extractor/sass.rb +8 -0
  42. data/lib/comment_extractor/extractor/scala.rb +8 -0
  43. data/lib/comment_extractor/extractor/scss.rb +8 -0
  44. data/lib/comment_extractor/extractor/shell.rb +11 -0
  45. data/lib/comment_extractor/extractor/sqf.rb +8 -0
  46. data/lib/comment_extractor/extractor/sql.rb +12 -0
  47. data/lib/comment_extractor/extractor/sqs.rb +7 -0
  48. data/lib/comment_extractor/extractor/tex.rb +12 -0
  49. data/lib/comment_extractor/extractor/text.rb +10 -0
  50. data/lib/comment_extractor/extractor/yaml.rb +12 -0
  51. data/lib/comment_extractor/extractor.rb +96 -0
  52. data/lib/comment_extractor/extractor_manager.rb +158 -0
  53. data/lib/comment_extractor/file.rb +42 -0
  54. data/lib/comment_extractor/parser.rb +33 -0
  55. data/lib/comment_extractor/smart_string_scanner.rb +11 -0
  56. data/lib/comment_extractor/version.rb +4 -0
  57. data/lib/comment_extractor.rb +18 -0
  58. data/spec/assets/binary_file +0 -0
  59. data/spec/assets/shebang_file +3 -0
  60. data/spec/assets/source_code/c.c +158 -0
  61. data/spec/assets/source_code/cc.cc +24 -0
  62. data/spec/assets/source_code/class +0 -0
  63. data/spec/assets/source_code/clojure.clj +41 -0
  64. data/spec/assets/source_code/coffee.coffee +27 -0
  65. data/spec/assets/source_code/cpp.cpp +130 -0
  66. data/spec/assets/source_code/cs.cs +53 -0
  67. data/spec/assets/source_code/css.css +37 -0
  68. data/spec/assets/source_code/cxx +0 -0
  69. data/spec/assets/source_code/d.d +110 -0
  70. data/spec/assets/source_code/erlang.es +34 -0
  71. data/spec/assets/source_code/fortran.f +41 -0
  72. data/spec/assets/source_code/golang.go +61 -0
  73. data/spec/assets/source_code/h +0 -0
  74. data/spec/assets/source_code/haml.haml +26 -0
  75. data/spec/assets/source_code/haskell.hs +36 -0
  76. data/spec/assets/source_code/hpp +0 -0
  77. data/spec/assets/source_code/html.html +139 -0
  78. data/spec/assets/source_code/java.java +39 -0
  79. data/spec/assets/source_code/java_script.js +164 -0
  80. data/spec/assets/source_code/lisp.el +18 -0
  81. data/spec/assets/source_code/lua.lua +34 -0
  82. data/spec/assets/source_code/m +0 -0
  83. data/spec/assets/source_code/mm +0 -0
  84. data/spec/assets/source_code/perl.pl +36 -0
  85. data/spec/assets/source_code/php.php +31 -0
  86. data/spec/assets/source_code/python.py +139 -0
  87. data/spec/assets/source_code/ruby.rb +36 -0
  88. data/spec/assets/source_code/sass.sass +77 -0
  89. data/spec/assets/source_code/scala.scala +46 -0
  90. data/spec/assets/source_code/scss.scss +93 -0
  91. data/spec/assets/source_code/shell.sh +5 -0
  92. data/spec/assets/source_code/sqf +0 -0
  93. data/spec/assets/source_code/sql.sql +11 -0
  94. data/spec/assets/source_code/sqs +0 -0
  95. data/spec/assets/source_code/tex.tex +20 -0
  96. data/spec/assets/source_code/text.txt +15 -0
  97. data/spec/assets/source_code/vim +17 -0
  98. data/spec/assets/source_code/yaml.yml +44 -0
  99. data/spec/assets/stripper/children/children +0 -0
  100. data/spec/assets/stripper/children/children.c +0 -0
  101. data/spec/assets/stripper/children/children.js +0 -0
  102. data/spec/assets/stripper/children/children.o +0 -0
  103. data/spec/assets/stripper/children/children.rb +1 -0
  104. data/spec/assets/stripper/test +0 -0
  105. data/spec/assets/stripper/test.c +0 -0
  106. data/spec/assets/stripper/test.js +0 -0
  107. data/spec/assets/stripper/test.o +0 -0
  108. data/spec/assets/stripper/test.rb +1 -0
  109. data/spec/comment_extractor/code_object/comment_spec.rb +15 -0
  110. data/spec/comment_extractor/code_object_spec.rb +18 -0
  111. data/spec/comment_extractor/code_objects_spec.rb +66 -0
  112. data/spec/comment_extractor/configuration_spec.rb +68 -0
  113. data/spec/comment_extractor/encoding_spec.rb +77 -0
  114. data/spec/comment_extractor/extractor/c_spec.rb +9 -0
  115. data/spec/comment_extractor/extractor/cc_spec.rb +9 -0
  116. data/spec/comment_extractor/extractor/class_spec.rb +9 -0
  117. data/spec/comment_extractor/extractor/clojure_spec.rb +9 -0
  118. data/spec/comment_extractor/extractor/coffee_spec.rb +9 -0
  119. data/spec/comment_extractor/extractor/cpp_spec.rb +9 -0
  120. data/spec/comment_extractor/extractor/cs_spec.rb +9 -0
  121. data/spec/comment_extractor/extractor/css_spec.rb +9 -0
  122. data/spec/comment_extractor/extractor/cxx_spec.rb +9 -0
  123. data/spec/comment_extractor/extractor/d_spec.rb +10 -0
  124. data/spec/comment_extractor/extractor/erlang_spec.rb +10 -0
  125. data/spec/comment_extractor/extractor/fortran_spec.rb +9 -0
  126. data/spec/comment_extractor/extractor/go_spec.rb +9 -0
  127. data/spec/comment_extractor/extractor/h_spec.rb +9 -0
  128. data/spec/comment_extractor/extractor/haml_spec.rb +9 -0
  129. data/spec/comment_extractor/extractor/haskell_spec.rb +9 -0
  130. data/spec/comment_extractor/extractor/hpp_spec.rb +9 -0
  131. data/spec/comment_extractor/extractor/html_spec.rb +9 -0
  132. data/spec/comment_extractor/extractor/java_script_spec.rb +10 -0
  133. data/spec/comment_extractor/extractor/java_spec.rb +9 -0
  134. data/spec/comment_extractor/extractor/lisp_spec.rb +9 -0
  135. data/spec/comment_extractor/extractor/lua_spec.rb +9 -0
  136. data/spec/comment_extractor/extractor/m_spec.rb +9 -0
  137. data/spec/comment_extractor/extractor/markdown_spec.rb +8 -0
  138. data/spec/comment_extractor/extractor/mm_spec.rb +9 -0
  139. data/spec/comment_extractor/extractor/perl_spec.rb +9 -0
  140. data/spec/comment_extractor/extractor/php_spec.rb +9 -0
  141. data/spec/comment_extractor/extractor/python_spec.rb +9 -0
  142. data/spec/comment_extractor/extractor/ruby_spec.rb +12 -0
  143. data/spec/comment_extractor/extractor/sass_spec.rb +9 -0
  144. data/spec/comment_extractor/extractor/scala_spec.rb +9 -0
  145. data/spec/comment_extractor/extractor/scss_spec.rb +9 -0
  146. data/spec/comment_extractor/extractor/shell_spec.rb +9 -0
  147. data/spec/comment_extractor/extractor/sqf_spec.rb +9 -0
  148. data/spec/comment_extractor/extractor/sql_spec.rb +9 -0
  149. data/spec/comment_extractor/extractor/sqs_spec.rb +9 -0
  150. data/spec/comment_extractor/extractor/tex_spec.rb +9 -0
  151. data/spec/comment_extractor/extractor/text_spec.rb +7 -0
  152. data/spec/comment_extractor/extractor/yaml_spec.rb +9 -0
  153. data/spec/comment_extractor/extractor_manager_spec.rb +233 -0
  154. data/spec/comment_extractor/extractor_spec.rb +102 -0
  155. data/spec/comment_extractor/file_spec.rb +100 -0
  156. data/spec/comment_extractor/parser_spec.rb +67 -0
  157. data/spec/comment_extractor/smart_string_scanner_spec.rb +24 -0
  158. data/spec/comment_extractor/version_spec.rb +8 -0
  159. data/spec/comment_extractor_spec.rb +15 -0
  160. data/spec/spec_helper.rb +22 -0
  161. data/spec/support/rspec/comment_extractor/extractor_example_group.rb +115 -0
  162. data/spec/support/rspec/comment_extractor/matchers/extract_comment.rb +58 -0
  163. data/spec/support/rspec/comment_extractor/matchers.rb +7 -0
  164. data/spec/support/rspec/comment_extractor.rb +6 -0
  165. metadata +370 -0
@@ -0,0 +1,110 @@
1
+ /*[-1-]@copyright wikipedia http://en.wikibooks.org/wiki/D_Programming/First_Program_Examples [-end-]*/
2
+ /*[-2-]Hello World in D
3
+ [-3-]To compile:
4
+ [-4-]dmd hello.d
5
+ [-5-]or to optimize:
6
+ [-6-]dmd -O -inline -release hello.d
7
+ [-7-]or to get generated documentation:
8
+ [-8-]dmd hello.d -D
9
+ */
10
+ import std.stdio; //[-10-]References to commonly used I/O routines.
11
+ void main(char[][] args)
12
+ {
13
+ //[-13-]Write-Formatted-Line
14
+ writefln("Hello World, "
15
+ "Reloaded");
16
+ foreach(argc, argv; args)
17
+ {
18
+ auto cl = new CmdLin(argc, argv);
19
+
20
+ writefln(cl.argnum, cl.suffix, " arg: //%s", cl.argv);
21
+ delete cl;
22
+ }
23
+ struct specs
24
+ {
25
+ int count, allocated;
26
+ }
27
+
28
+ specs argspecs(char[][] args)
29
+ in{
30
+ assert (args.length > 0);
31
+ }
32
+ out(result){
33
+ assert(result.count == CmdLin.total);
34
+ assert(result.allocated > 0);
35
+ }
36
+ body{
37
+ specs* s = new specs;
38
+ s.count = args.length; //[-38-] The 'length' property is number of elements.
39
+ s.allocated = typeof(args).sizeof;
40
+ foreach(argv; args)
41
+ s.allocated += argv.length * typeof(argv[0]).sizeof;
42
+ return *s;
43
+ }
44
+
45
+ char[] argcmsg = "argc = %d";
46
+ char[] allocmsg = "allocated = %d";
47
+ writefln(argcmsg ~ ", " ~ allocmsg,
48
+ argspecs(args).count,argspecs(args).allocated);
49
+ }
50
+ /*[-50-]
51
+ [-51-]Stores a single command line argument.
52
+ [-52-][-end-]*/
53
+ class CmdLin
54
+ {
55
+ private {
56
+ int _argc;
57
+ char[] _argv;
58
+ static uint _totalc;
59
+ }
60
+
61
+ public:
62
+ this(int argc, char[] argv)
63
+ {
64
+ _argc = argc + 1;
65
+ _argv = argv;
66
+ _totalc++;
67
+ }
68
+
69
+ ~this()
70
+ {
71
+ }
72
+
73
+ int argnum()
74
+ {
75
+ return _argc;
76
+ }
77
+ char[] argv()
78
+ {
79
+ return _argv;
80
+ }
81
+ wchar[] suffix()
82
+ {
83
+ wchar[] suffix;
84
+ switch(_argc)
85
+ {
86
+ case 1:
87
+ suffix = "st";
88
+ break;
89
+ case 2:
90
+ suffix = "nd";
91
+ break;
92
+ case 3:
93
+ suffix = "rd";
94
+ break;
95
+ default:
96
+ suffix = "th";
97
+ }
98
+ return suffix;
99
+ }
100
+
101
+ static typeof(_totalc) total()
102
+ {
103
+ return _totalc;
104
+ }
105
+ invariant
106
+ {
107
+ assert(_argc > 0);
108
+ assert(_totalc >= _argc);
109
+ }
110
+ }
@@ -0,0 +1,34 @@
1
+ %%[-1-]Attribution-Share Alike 3.0 License, copyright (c) 2010 Pieter Hintjens, modified @alpaca-tc
2
+ %%[-2-] Reading from multiple sockets
3
+ %%[-3-] This version uses active sockets
4
+ %[-4-]
5
+
6
+ main(_) ->
7
+ {ok,Context} = erlzmq:context(),
8
+
9
+ %%[-9-] Connect to task ventilator
10
+ {ok, Receiver} = erlzmq:socket(Context, [pull, {active, true}]),
11
+ ok = erlzmq:connect(Receiver, "tcp://localhost:5557"),
12
+
13
+ %%[-13-] Connect to weather server
14
+ {ok, Subscriber} = erlzmq:socket(Context, [sub, {active, true}]),
15
+ ok = erlzmq:connect(Subscriber, "tcp://localhost:5556"),
16
+ ok = erlzmq:setsockopt(Subscriber, subscribe, <<"10001">>),
17
+
18
+ %%[-18-] Process messages from both sockets
19
+ loop(Receiver, Subscriber),
20
+
21
+ %%[-21-] We never get here
22
+ ok = erlzmq:close(Receiver), %%[-22-] we never get here
23
+ ok = erlzmq:close(Subscriber),
24
+ ok = erlzmq:term(Context).
25
+
26
+ loop(Tasks, Weather) ->
27
+ receive
28
+ {zmq, Tasks, Msg, _Flags} ->
29
+ io:format("Processing task: ~s~n",[Msg]),
30
+ loop(Tasks, Weather);
31
+ {zmq, Weather, Msg, _Flags} ->
32
+ io:format("Processing weather update: ~s~n",[Msg]),
33
+ loop(Tasks, Weather)
34
+ end.
@@ -0,0 +1,41 @@
1
+ program average
2
+
3
+ ![-3-]@copyright wikipedia, modified @alpaca-tc. http://en.wikipedia.org/wiki/Fortran
4
+ ![-4-] Read in some numbers and take the average
5
+ ![-5-] As written, if there are no data points, an average of zero is returned
6
+ ![-6-] While this may not be desired behavior, it keeps this example simple
7
+
8
+ implicit none
9
+
10
+ real, dimension(:), allocatable :: points
11
+ integer :: number_of_points
12
+ real :: average_points=0., positive_average=0., negative_average=0.
13
+
14
+ write (*,*) "Input number of points to average:"
15
+ read (*,*) number_of_points
16
+
17
+ allocate (points(number_of_points))
18
+
19
+ write (*,*) "Enter the points to average:"
20
+ read (*,*) points
21
+
22
+ ![-22-] Take the average by summing points and dividing by number_of_points
23
+ if (number_of_points > 0) average_points = sum(points) / number_of_points
24
+
25
+ ![-25-] Now form average over positive and negative points only
26
+ if (count(points > 0.) > 0) then
27
+ positive_average = sum(points, points > 0.) / count(points > 0.)
28
+ end if
29
+
30
+ if (count(points < 0.) > 0) then
31
+ negative_average = sum(points, points < 0.) / count(points < 0.)
32
+ end if
33
+
34
+ deallocate (points) ![-34-] Print result to terminal
35
+
36
+ ![-36-] Print result to terminal
37
+ write (*,'(a,g12.4)') 'Average = ', average_points
38
+ write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
39
+ write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
40
+
41
+ end program average
@@ -0,0 +1,61 @@
1
+ //[-1-]Attribution-Share Alike 3.0 License, copyright (c) 2010 Pieter Hintjens, modified @alpaca-tc
2
+ //[-2-] Task Wroker
3
+ //[-3-] Connects PULL socket to tcp://localhost:5557
4
+ //[-4-] Collects workloads from ventilator via that socket
5
+ //[-5-] Connects PUSH socket to tcp://localhost:5558
6
+ //[-6-] Connects SUB socket to tcp://localhost:5559
7
+ //[-7-] Sends results to sink via that socket
8
+ //[-8-]
9
+ package main
10
+
11
+ import (
12
+ "fmt"
13
+ zmq "github.com/alecthomas/gozmq"
14
+ "strconv"
15
+ "time"
16
+ )
17
+
18
+ func main() {
19
+ context, _ := zmq.NewContext()
20
+ defer context.Close()
21
+
22
+ /*[-22-]
23
+ [-23-] Socket to receive messages on
24
+ */
25
+ receiver.Connect("tcp://localhost:5557")
26
+
27
+ //[-27-] Socket to send messages to task sink
28
+ sender, _ := context.NewSocket(zmq.PUSH)
29
+ defer sender.Close()
30
+ sender.Connect("tcp://localhost:5558")
31
+
32
+ //[-32-] Socket for control input
33
+ controller, _ := context.NewSocket(zmq.SUB)
34
+ defer controller.Close()
35
+ controller.Connect("tcp://localhost:5559")
36
+ controller.SetSubscribe("")
37
+
38
+ items := zmq.PollItems{
39
+ zmq.PollItem{Socket: receiver, Events: zmq.POLLIN},
40
+ zmq.PollItem{Socket: controller, Events: zmq.POLLIN},
41
+ }
42
+
43
+ //[-43-] Process tasks forever
44
+ for {
45
+ zmq.Poll(items, -1)
46
+ switch {
47
+ case items[0].REvents&zmq.POLLIN != 0: /*[-47-] Process tasks forever [-end-]*/
48
+ msgbytes, _ := receiver.Recv(0)
49
+ fmt.Printf("%s.", string(msgbytes))
50
+
51
+ //[-51-] Do the work
52
+ msec, _ := strconv.ParseInt(string(msgbytes), 10, 64)
53
+ time.Sleep(time.Duration(msec) * 1e6)
54
+
55
+ sender.Send([]byte(""), 0) //[-55-] Send results to sink
56
+ case items[1].REvents&zmq.POLLIN != 0:
57
+ fmt.Println("stopping")
58
+ return
59
+ }
60
+ }
61
+ }
File without changes
@@ -0,0 +1,26 @@
1
+ !!! 5
2
+ %html(lang="en")
3
+ %head
4
+ %meta(charset="utf-8")
5
+ %meta(http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1")
6
+ %meta(name="viewport" content="width=device-width, initial-scale=1.0")
7
+ %title= content_for?(:title) ? yield(:title) : "EnfacTv"
8
+ = csrf_meta_tags
9
+ / Le HTML5 shim, for IE6-8 support of HTML elements
10
+ = favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' #[-10-] single line
11
+ -#[-11-] single line
12
+ -#[-12-]
13
+
14
+ = huga
15
+ %body
16
+ #header
17
+ .inner
18
+ #header_links.clearfix
19
+ %ul
20
+ %li
21
+ %a{ :href => "" }= '' #[-21-] single line
22
+ #main_contents
23
+ #content_area
24
+ .inner.clearfix
25
+ = yield
26
+ -#[-26-]
@@ -0,0 +1,36 @@
1
+ --[-1-]Attribution-Share Alike 3.0 License, copyright (c) 2010 Pieter Hintjens, modified @alpaca-tc
2
+ --[-2-] | Pub/Sub envelope subscriber (p.76)
3
+ --[-3-] Pub/Sub envelope subscriber (p.76)
4
+ --[-4-] ^
5
+ {-[-5-]
6
+ [-6-]
7
+ [-7-][-end-]-}
8
+ {-[-8-]|
9
+ [-9-][-end-]-}
10
+ {-[-10-]| [-end-]-}
11
+ module Main where
12
+
13
+ import System.ZMQ4.Monadic
14
+ import Data.ByteString.Char8 (unpack)
15
+ import Control.Monad (when)
16
+ import Text.Printf
17
+
18
+ main :: IO ()
19
+ main =
20
+ runZMQ $ do
21
+ subscriber <- socket Sub
22
+ connect subscriber "tcp://localhost:5563"
23
+ subscribe subscriber "B"
24
+
25
+ loop subscriber --[-25-]start listening for pub messages
26
+
27
+ where
28
+ loop subscriber = do
29
+ --[-29-] read envelope with address
30
+ receive subscriber >>= \addr -> liftIO $ printf "Address is %s\n" (unpack addr)
31
+ --[-31-] read message content
32
+ more <- moreToReceive subscriber
33
+ when more $ do
34
+ contents <- receive subscriber
35
+ liftIO $ putStrLn (unpack contents)
36
+ loop subscriber
File without changes
@@ -0,0 +1,139 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ja">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>RailsとRubyとVimのブログ</title>
6
+
7
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
8
+ <meta content='RailsとRubyとVimのブログ' name='title' />
9
+
10
+
11
+ <link rel="author" href="https://plus.google.com/105581201951227096827" />
12
+ <link rel="publisher" href="https://plus.google.com/105581201951227096827" />
13
+ <!--[-13-][if lte IE 8]>
14
+ [-14-] multiline comment
15
+ [-15-]<![endif][-end-]-->
16
+
17
+ <meta property="og:title" content='RailsとRubyとVimのブログ' />
18
+ <meta property="og:locale" content="ja_JP"/>
19
+ <meta property="og:image" content="http://http://alpaca.tc/images/meta/site_title.png"/>
20
+ <meta property="og:type" content="blog"/>
21
+ <meta property="og:url" content="http://alpaca.tc/index.html"/>
22
+ <meta property="og:site_name" content="RailsとRubyとVimのブログ"/>
23
+ <meta property="og:description" content="ここまで出来る!RubyのSplat Operatorまとめ Feb 12th, 2014 Posted by 石井浩之 Splat Operatorとは、*のことです この前、友人にコードレビューしてもらっていたら 「え、Rubyってこんな書き方出来るんですか?」と言われて、「 &hellip;" />
24
+ <meta property="fb:app_id" content="224701561024840" />
25
+
26
+ <meta name="twitter:card" content="summary">
27
+ <meta name="twitter:title" content="RailsとRubyとVimのブログ">
28
+ <meta name="twitter:description" content="ここまで出来る!RubyのSplat Operatorまとめ Feb 12th, 2014 Posted by 石井浩之 Splat Operatorとは、*のことです この前、友人にコードレビューしてもらっていたら 「え、Rubyってこんな書き方出来るんですか?」と言われて、「 &hellip;">
29
+ <meta name="twitter:image" content="http://http://alpaca.tc/images/meta/twitter.png">
30
+ <meta name="twitter:site" content="@alpaca_taichou">
31
+ <meta name="twitter:creator" content="@alpaca_taichou">
32
+
33
+
34
+ <script type="text/javascript">window._pt_lt = new Date().getTime();</script>
35
+
36
+ <link rel="stylesheet" href="/stylesheets/reset.css" type="text/css" media="all"/>
37
+ <link rel="stylesheet" href="/stylesheets/compression.css" type="text/css" media="all"/>
38
+ <meta name="google-site-verification" content="thSL3cUT7BV1-AENglRFIF-kv6I85JJ6_iUGAU8GaQI" />
39
+
40
+ <!--[-40-] multiline comment [-end-]-->
41
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
42
+
43
+
44
+ <script>
45
+ var _gaq = _gaq || [];
46
+ _gaq.push(['_require', 'inpage_linkid', '//www.google-analytics.com/plugins/ga/inpage_linkid.js']);
47
+ _gaq.push(['_setAccount', 'UA-44082439-2']);
48
+ _gaq.push(['_trackPageview']);
49
+ (function() {
50
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
51
+ ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
52
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
53
+ })();
54
+ </script>
55
+
56
+
57
+
58
+
59
+
60
+ <link rel="next" href="/blog/page/2/">
61
+
62
+
63
+
64
+
65
+
66
+ <link rel="canonical" href="http://alpaca.tc/index.html">
67
+
68
+
69
+
70
+ </head>
71
+ <div id="fb-root"></div>
72
+
73
+ <body id="default_contents">
74
+ <div id="header_top" class="outer_envelope clearfix">
75
+ <header> <div class="inner_wrapper clearfix">
76
+ <div class="inner clearfix">
77
+ <div id="logo">
78
+
79
+ <h1 id="site_title"><a href="/">RailsとRubyとVimのブログ</a></h1>
80
+
81
+ </div>
82
+
83
+ <nav id="header_nav">
84
+ <ul class="clearfix">
85
+ <li>
86
+ <a href="/about_me">About Me</a>
87
+ </li>
88
+ <li>
89
+ <a href="/">Blog</a>
90
+ </li>
91
+ <li>
92
+ <a href="/works/">Works</a>
93
+ </li>
94
+ <li>
95
+ <a target="_blank" href="https://github.com/alpaca-tc">GitHub</a>
96
+ </li>
97
+ <li>
98
+ <a target="_blank" href="https://twitter.com/alpaca_taichou">Twitter</a>
99
+ </li>
100
+ </ul>
101
+ </nav>
102
+ </div>
103
+ </div>
104
+ </header>
105
+
106
+ <div id="main_contents" class="clearfix">
107
+ <div class="inner_wrapper">
108
+ <div class="inner">
109
+ <div class="left_page inner_wrapper">
110
+ <div id="page_contents" class="inner">
111
+ <div id="index_contents" class="blog-index">
112
+ <!--[-112-]
113
+ [-113-][-end-]-->
114
+ <script type="text/javascript" charset="utf-8">
115
+ (function() {
116
+ $(function() {
117
+ var isSmartPhone = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase());
118
+ if (isSmartPhone) {
119
+ var $pagination = $('.pagination'),
120
+ $prev = $pagination.find('.prev'),
121
+ $next = $pagination.find('.next');
122
+ $prev.text($prev.data('label'));
123
+ $next.text($next.data('label'));
124
+ }
125
+ });
126
+ })();
127
+ </script>
128
+ </div>
129
+
130
+ </div>
131
+ </div>
132
+
133
+
134
+ </div>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </body>
139
+ </html>
@@ -0,0 +1,39 @@
1
+ //[-1-]Attribution-Share Alike 3.0 License, copyright (c) 2010 Pieter Hintjens, modified @alpaca-tc
2
+ import java.util.HashMap;
3
+ import java.util.Map;
4
+ import java.util.concurrent.atomic.AtomicLong;
5
+
6
+ import org.zeromq.ZContext;
7
+ import org.zeromq.ZMQ;
8
+ import org.zeromq.ZMQ.Socket;
9
+ /*[-9-]
10
+ [-10-]Clone client model 1
11
+ [-11-]@author Danish Shrestha <dshrestha06@gmail.com>
12
+ [-12-]aa
13
+ [-13-] [-end-]*/
14
+ public class clonecli1 {
15
+ private static Map<String, kvsimple> kvMap = new HashMap<String, kvsimple>();
16
+ private static AtomicLong sequence = new AtomicLong();
17
+
18
+ public void run() { //[-18-]
19
+ ZContext ctx = new ZContext();
20
+ Socket subscriber = ctx.createSocket(ZMQ.SUB);
21
+ subscriber.connect("tcp://localhost:5556");
22
+ subscriber.subscribe("".getBytes());
23
+ /*[-23-] [-end-]*/
24
+ while (true) {
25
+ kvsimple kvMsg = kvsimple.recv(subscriber);
26
+ if (kvMsg == null)
27
+ break;
28
+
29
+ clonecli1.kvMap.put(kvMsg.getKey(), kvMsg);
30
+ System.out.println("receiving " + kvMsg);
31
+ sequence.incrementAndGet();
32
+ }
33
+ ctx.destroy();
34
+ }
35
+
36
+ public static void main(String[] args) {
37
+ new clonecli1().run();
38
+ }
39
+ }
@@ -0,0 +1,164 @@
1
+
2
+
3
+ //[-3-] Copyright 2014 jQuery Foundation and other contributors
4
+ define([
5
+ "./core",
6
+ './var/rnotwhite'
7
+ ], function( jQuery, rnotwhite ) {
8
+
9
+ var optionsCache = {};
10
+
11
+ function createOptions( options ) {
12
+ var object = optionsCache[ options ] = {};
13
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
14
+ object[ flag ] = true;
15
+ });
16
+ return object;
17
+ }
18
+ /*[-18-] multi line [-end-]*/
19
+ /*[-19-]
20
+ [-20-] Create a callback list using the following parameters:
21
+ [-21-]
22
+ [-22-] options: an optional list of space-separated options that will change how
23
+ [-23-] the callback list behaves or a more traditional option object
24
+ [-24-]
25
+ */
26
+ jQuery.Callbacks = function( options ) {
27
+ //[-27-] (we check in cache first)
28
+ options = typeof options === "string" ?
29
+ ( optionsCache[ options ] || createOptions( options ) ) :
30
+ jQuery.extend( {}, options );
31
+
32
+ var //[-32-] Last fire value (for non-forgettable lists)
33
+ memory,
34
+ //[-34-] Flag to know if list was already fired
35
+ fired,
36
+ //[-36-] Flag to know if list is currently firing
37
+ firing,
38
+ firingStart,
39
+ list = "// dummy",
40
+ list = "/*dummy",
41
+ list = [],
42
+ stack = !options.once && [],
43
+ fire = function( data ) {
44
+ memory = options.memory && data;
45
+ fired = true;
46
+ firingIndex = firingStart || 0;
47
+ firingStart = 0;
48
+ firingLength = list.length;
49
+ firing = true;
50
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
51
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
52
+ memory = false; //[-52-] To prevent further calls using add
53
+ break;
54
+ }
55
+ }
56
+ firing = false;
57
+ if ( list ) {
58
+ if ( stack ) {
59
+ if ( stack.length ) {
60
+ fire( stack.shift() );
61
+ }
62
+ } else if ( memory ) {
63
+ list = [];
64
+ } else {
65
+ self.disable();
66
+ }
67
+ }
68
+ },
69
+ self = {
70
+ add: function() {
71
+ if ( list ) {
72
+ var start = list.length;
73
+ (function add( args ) {
74
+ jQuery.each( args, function( _, arg ) {
75
+ var type = jQuery.type( arg );
76
+ if ( type === "function" ) {
77
+ if ( !options.unique || !self.has( arg ) ) {
78
+ list.push( arg );
79
+ }
80
+ } else if ( arg && arg.length && type !== "string" ) {
81
+ //[-81-] Inspect recursively
82
+ add( arg );
83
+ }
84
+ });
85
+ })( arguments );
86
+ if ( firing ) {
87
+ firingLength = list.length;
88
+ } else if ( memory ) {
89
+ firingStart = start;
90
+ fire( memory );
91
+ }
92
+ }
93
+ return this;
94
+ },
95
+ remove: function() {
96
+ if ( list ) {
97
+ jQuery.each( arguments, function( _, arg ) {
98
+ var index;
99
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
100
+ list.splice( index, 1 );
101
+ if ( firing ) {
102
+ if ( index <= firingLength ) {
103
+ firingLength--;
104
+ }
105
+ if ( index <= firingIndex ) {
106
+ firingIndex--;
107
+ }
108
+ }
109
+ }
110
+ });
111
+ }
112
+ return this;
113
+ },
114
+ has: function( fn ) {
115
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
116
+ },
117
+ empty: function() {
118
+ list = [];
119
+ firingLength = 0;
120
+ return this;
121
+ },
122
+ disable: function() {
123
+ list = stack = memory = undefined;
124
+ return this;
125
+ },
126
+ disabled: function() {
127
+ return !list;
128
+ },
129
+ lock: function() {
130
+ stack = undefined;
131
+ if ( !memory ) {
132
+ self.disable();
133
+ }
134
+ return this;
135
+ },
136
+ locked: function() {
137
+ return !stack;
138
+ },
139
+ fireWith: function( context, args ) {
140
+ if ( list && ( !fired || stack ) ) {
141
+ args = args || [];
142
+ args = [ context, args.slice ? args.slice() : args ];
143
+ if ( firing ) {
144
+ stack.push( args );
145
+ } else {
146
+ fire( args );
147
+ }
148
+ }
149
+ return this;
150
+ },
151
+ fire: function() {
152
+ self.fireWith( this, arguments );
153
+ return this;
154
+ },
155
+ fired: function() {
156
+ return !!fired;
157
+ }
158
+ };
159
+
160
+ return self;
161
+ };
162
+
163
+ return jQuery;
164
+ });
@@ -0,0 +1,18 @@
1
+ ;;;;[-1-] COMMENT-EXAMPLE function.
2
+ ;;;[-2-] This function is useless except to demonstrate comments.
3
+ ;;;[-3-] (Actually, this example is much too cluttered with them.)
4
+
5
+ (defun comment-example (x y) ;[-5-]X is anything; Y is an a-list.
6
+ (cond ((listp x) x) ;[-6-]If X is a list, use that.
7
+ ;;[-7-] X is now not a list. There are two other cases.
8
+ ((symbolp x)
9
+ ;;[-9-] Look up a symbol in the a-list.
10
+ (cdr (assoc x y))) ;[-10-]Remember, (cdr nil) is nil.
11
+ ;;[-11-] Do this when all else fails:
12
+ (t (cons x ;[-12-]Add x to a default list.
13
+ '((lisp t) ;[-13-]LISP is okay.
14
+ (fortran nil) ;[-14-]FORTRAN is not.
15
+ (pl/i -500) ;[-15-]Note that you can put comments in
16
+ (ada .001) ;[-16-] "data" as well as in "programs".
17
+ ;;[-17-] COBOL??
18
+ (teco -1.0e9))))))