yard-lucid 0.1.0

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 (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +87 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +13 -0
  11. data/bin/setup +8 -0
  12. data/lib/docserver/default/fulldoc/html/js/lucid.js +69 -0
  13. data/lib/docserver/default/layout/html/headers.erb +13 -0
  14. data/lib/docserver/doc_server/full_list/html/full_list.erb +37 -0
  15. data/lib/docserver/doc_server/full_list/html/setup.rb +19 -0
  16. data/lib/lucid/gherkin_repr.rb +307 -0
  17. data/lib/templates/default/feature/html/docstring.erb +3 -0
  18. data/lib/templates/default/feature/html/feature.erb +39 -0
  19. data/lib/templates/default/feature/html/no_steps_defined.erb +1 -0
  20. data/lib/templates/default/feature/html/outline.erb +52 -0
  21. data/lib/templates/default/feature/html/scenario.erb +52 -0
  22. data/lib/templates/default/feature/html/setup.rb +51 -0
  23. data/lib/templates/default/feature/html/steps.erb +37 -0
  24. data/lib/templates/default/feature/html/table.erb +19 -0
  25. data/lib/templates/default/featuredirectory/html/alpha_table.erb +30 -0
  26. data/lib/templates/default/featuredirectory/html/directory.erb +30 -0
  27. data/lib/templates/default/featuredirectory/html/setup.rb +41 -0
  28. data/lib/templates/default/featuretags/html/namespace.erb +127 -0
  29. data/lib/templates/default/featuretags/html/setup.rb +33 -0
  30. data/lib/templates/default/fulldoc/html/css/lucid.css +224 -0
  31. data/lib/templates/default/fulldoc/html/directories.erb +27 -0
  32. data/lib/templates/default/fulldoc/html/full_list_featuredirectories.erb +11 -0
  33. data/lib/templates/default/fulldoc/html/full_list_features.erb +36 -0
  34. data/lib/templates/default/fulldoc/html/full_list_stepdefinitions.erb +20 -0
  35. data/lib/templates/default/fulldoc/html/full_list_steps.erb +20 -0
  36. data/lib/templates/default/fulldoc/html/full_list_tags.erb +16 -0
  37. data/lib/templates/default/fulldoc/html/js/lucid.js +284 -0
  38. data/lib/templates/default/fulldoc/html/setup.rb +199 -0
  39. data/lib/templates/default/layout/html/setup.rb +111 -0
  40. data/lib/templates/default/specifications/html/alpha_table.erb +26 -0
  41. data/lib/templates/default/specifications/html/setup.rb +49 -0
  42. data/lib/templates/default/specifications/html/specifications.erb +46 -0
  43. data/lib/templates/default/steptransformers/html/header.erb +12 -0
  44. data/lib/templates/default/steptransformers/html/index.erb +9 -0
  45. data/lib/templates/default/steptransformers/html/setup.rb +92 -0
  46. data/lib/templates/default/steptransformers/html/transformers.erb +74 -0
  47. data/lib/templates/default/steptransformers/html/undefinedsteps.erb +26 -0
  48. data/lib/templates/default/tag/html/alpha_table.erb +32 -0
  49. data/lib/templates/default/tag/html/setup.rb +26 -0
  50. data/lib/templates/default/tag/html/tag.erb +31 -0
  51. data/lib/yard/code_objects/lucid/base.rb +23 -0
  52. data/lib/yard/code_objects/lucid/feature.rb +12 -0
  53. data/lib/yard/code_objects/lucid/namespace_object.rb +43 -0
  54. data/lib/yard/code_objects/lucid/scenario.rb +20 -0
  55. data/lib/yard/code_objects/lucid/scenario_outline.rb +66 -0
  56. data/lib/yard/code_objects/lucid/step.rb +32 -0
  57. data/lib/yard/code_objects/lucid/tag.rb +21 -0
  58. data/lib/yard/code_objects/step_definition.rb +3 -0
  59. data/lib/yard/code_objects/step_transform.rb +3 -0
  60. data/lib/yard/code_objects/step_transformer.rb +85 -0
  61. data/lib/yard/handlers/lucid/base.rb +19 -0
  62. data/lib/yard/handlers/lucid/feature_handler.rb +102 -0
  63. data/lib/yard/handlers/step_definition_handler.rb +67 -0
  64. data/lib/yard/handlers/step_transform_handler.rb +28 -0
  65. data/lib/yard/parser/lucid/feature.rb +58 -0
  66. data/lib/yard/server/adapter.rb +32 -0
  67. data/lib/yard/server/commands/list_command.rb +25 -0
  68. data/lib/yard/server/router.rb +23 -0
  69. data/lib/yard/templates/helpers/base_helper.rb +22 -0
  70. data/lib/yard-lucid/version.rb +3 -0
  71. data/lib/yard-lucid.rb +36 -0
  72. data/yard-lucid.gemspec +38 -0
  73. metadata +215 -0
@@ -0,0 +1,127 @@
1
+ <% if @namespace %>
2
+ <div id="tags" class="specifications">
3
+ <script type="text/javascript" charset="utf-8">
4
+ var tag_list = [ <%= tags.collect { |t| "'#{t.value}'" }.join(',') %> ];
5
+
6
+ $(function() {
7
+
8
+ // On focus, remove all the shortcut keys
9
+ $("#tag_search").focus(function() {
10
+ $(document).unbind('keypress');
11
+ });
12
+
13
+ // On blur, return all the shortcut keys
14
+ $("#tag_search").blur(function() {
15
+ $(document).bind('keypress',keyboardShortcuts);
16
+ $(document).bind('keypress',cucumberKeyboardShortcuts);
17
+ });
18
+
19
+ $("#tag_search").keyup(function(evt) {
20
+ updateTagFiltering($("#tag_search")[0].value);
21
+ });
22
+
23
+
24
+ $("#tag_search").keyup(function(evt) {
25
+ updateTagFiltering($("#tag_search")[0].value);
26
+ });
27
+
28
+ $(".tag").click(function(evt) {
29
+ if (typeof evt !== "undefined") {
30
+
31
+ if (evt.shiftKey === true) {
32
+ window.location = $(this).attr("href");
33
+ return true;
34
+ }
35
+
36
+ var tagSearchElement = $("#tag_search")[0];
37
+
38
+ var tagToAdd = this.innerHTML;
39
+ var tagModifer = "";
40
+
41
+ if (evt.altKey === true ) {
42
+ tagToAdd = "~" + tagToAdd;
43
+ }
44
+
45
+ if (evt.ctrlKey === true ) {
46
+ tagModifier = ",";
47
+ } else {
48
+ tagModifier = " ";
49
+ }
50
+
51
+ tagSearchElement.value = (tagSearchElement.value != "" ? tagSearchElement.value + tagModifier : "") + tagToAdd;
52
+ updateTagFiltering(tagSearchElement.value);
53
+ }
54
+ });
55
+ });
56
+ </script>
57
+
58
+ <div class="title">
59
+ <span class="name">Tags</span>
60
+ </div>
61
+
62
+ <div id="tag_filtering" >
63
+ <span style="font-size: 18px;">Tag Filtering <a href="https://github.com/cucumber/cucumber/wiki/Tags" target="_blank">?</a></span>
64
+
65
+ <div style="clear: both"></div>
66
+
67
+ <div style="float: left; margin-top: 10px; padding-left: 5px; line-height: 1.5; font-size: 10px; font-style: italic;">
68
+ Type in tags with spaces between to 'AND' and commas between to 'OR'<br/>
69
+ LEFT CLICK to AND tags; CTRL+LEFT CLICK to OR tags; hold ALT for inverse (~) tags
70
+ </div>
71
+
72
+ <div style="clear: both;"></div>
73
+
74
+ <div style="float: right;">
75
+ <a href="#" onclick="clearTagFiltering(); $('#tag_search')[0].value = ''; return true;">clear</a>
76
+ </div>
77
+
78
+ <div style="clear: both"></div>
79
+
80
+ <input id="tag_search" type="text" />
81
+ <span>Example command line execution:</span>
82
+ <div id="command_example">cucumber</div>
83
+ </div>
84
+
85
+ <div class="tags" style="margin-top: 20px;"><span class="name">Tags:</span>
86
+ <%= tags.collect { |tag| tagify(tag) }.join(",\n") %>
87
+ </div>
88
+
89
+ <div id="features">
90
+ <div class="title">
91
+ <span class="name">Features</span>
92
+ </div>
93
+ <% n = 1 %>
94
+ <ul style="padding-left: 0px;">
95
+ <% features.each do |feature| %>
96
+ <li class="feature <%= n % 2 == 0 ? 'even' : 'odd' %> <%= feature.tags.collect {|t| t.value}.join(" ") %>">
97
+ <%= linkify feature, feature.value %>
98
+ <% ftags = feature.tags.collect{|t| tagify(t) }.join(", ") %>
99
+ <% if ftags && ftags != "" %>
100
+ - <small><%= ftags %></small>
101
+ <% end %>
102
+ </li>
103
+ <% n = n == 2 ? 1 : 2 %>
104
+ <% if feature.scenarios %>
105
+ <ul style="padding-left: 20px;">
106
+ <% feature.scenarios.each do |scenario| %>
107
+ <li class="scenario <%= n % 2 == 0 ? 'even' : 'odd' %> <%= feature.tags.collect{|t| t.value }.join(" ") %> <%= scenario.tags.collect{|t| t.value }.join(" ") %>">
108
+ <span class='object_link'>
109
+ <a href="<%= url_for(scenario.feature,"scenario#{scenario.feature.scenarios.index(scenario) }") %>">
110
+ <%= h scenario.value %>
111
+ </a>
112
+ </span>
113
+ <% stags = scenario.tags.collect{|t| tagify(t) }.join(", ") %>
114
+ <% if stags && stags != "" %>
115
+ - <small><%= stags %></small>
116
+ <% end %>
117
+ </li>
118
+ <% n = n == 2 ? 1 : 2 %>
119
+ <% end %>
120
+ </ul>
121
+ <% end %>
122
+ <% end %>
123
+ </ul>
124
+ <div class="undefined" style="display:none;">No Features or Scenarios match the Tag Expression</div>
125
+ </div>
126
+ </div>
127
+ <% end %>
@@ -0,0 +1,33 @@
1
+ def init
2
+ super
3
+ sections.push :namespace
4
+ @namespace = object
5
+ end
6
+
7
+ def namespace
8
+ erb(:namespace)
9
+ end
10
+
11
+ def all_tags_by_letter
12
+ hash = {}
13
+ objects = tags
14
+ objects = run_verifier(objects)
15
+ objects.each { |o| (hash[o.value.to_s[1,1].upcase] ||= []) << o }
16
+ hash
17
+ end
18
+
19
+ def tags
20
+ @tags ||= Registry.all(:tag).sort_by { |l| l.value.to_s }
21
+ end
22
+
23
+ def features
24
+ @features ||= Registry.all(:feature).sort { |x,y| x.value.to_s <=> y.value.to_s }
25
+ end
26
+
27
+ def feature_tags_with_all_scenario_tags(feature)
28
+ feature.tags.collect { |t| t.value} + feature.scenarios.collect { |s| s.tags.collect { |t| t.value} }.flatten.uniq
29
+ end
30
+
31
+ def tagify(tag)
32
+ %{<span class="tag" href="#{url_for tag}">#{tag.value}</span>}
33
+ end