sws 0.4

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 (158) hide show
  1. data/doc/DOC.otl +34 -0
  2. data/doc/Makefile +13 -0
  3. data/doc/architecture.dia +0 -0
  4. data/doc/docbook/architecture.png +0 -0
  5. data/doc/docbook/concepts.docbook +474 -0
  6. data/doc/docbook/installation.docbook +57 -0
  7. data/doc/docbook/introduction.docbook +130 -0
  8. data/doc/docbook/sws_manual.docbook +35 -0
  9. data/doc/docbook/todo.docbook +38 -0
  10. data/doc/docbook/tutorial.docbook +594 -0
  11. data/examples/README +1 -0
  12. data/examples/addressbook/CardBrowse/CardBrowse.html +43 -0
  13. data/examples/addressbook/CardBrowse/CardBrowse.rb +65 -0
  14. data/examples/addressbook/CardBrowse/CardBrowse.sws +92 -0
  15. data/examples/addressbook/Login/LoginPage.html +12 -0
  16. data/examples/addressbook/Login/LoginPage.rb +19 -0
  17. data/examples/addressbook/Login/LoginPage.sws +15 -0
  18. data/examples/addressbook/README +1 -0
  19. data/examples/addressbook/addressbook.rb +70 -0
  20. data/examples/addressbook/application.yaml +8 -0
  21. data/examples/addressbook/db.yaml +7 -0
  22. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.html +11 -0
  23. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.rb +21 -0
  24. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.sws +25 -0
  25. data/examples/component_demo/ComponentDemo.rb +21 -0
  26. data/examples/component_demo/ConditionalDemo/ConditionalDemo.html +18 -0
  27. data/examples/component_demo/ConditionalDemo/ConditionalDemo.rb +2 -0
  28. data/examples/component_demo/ConditionalDemo/ConditionalDemo.sws +22 -0
  29. data/examples/component_demo/FileUploadDemo/FileUploadDemo.html +10 -0
  30. data/examples/component_demo/FileUploadDemo/FileUploadDemo.rb +9 -0
  31. data/examples/component_demo/FileUploadDemo/FileUploadDemo.sws +33 -0
  32. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.html +12 -0
  33. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.rb +21 -0
  34. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.sws +40 -0
  35. data/examples/component_demo/FormListsDemo/FormListsDemo.html +11 -0
  36. data/examples/component_demo/FormListsDemo/FormListsDemo.rb +37 -0
  37. data/examples/component_demo/FormListsDemo/FormListsDemo.sws +47 -0
  38. data/examples/component_demo/GenericDemo/GenericDemo.html +4 -0
  39. data/examples/component_demo/GenericDemo/GenericDemo.rb +2 -0
  40. data/examples/component_demo/GenericDemo/GenericDemo.sws +10 -0
  41. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.html +8 -0
  42. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.rb +20 -0
  43. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.sws +19 -0
  44. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.html +11 -0
  45. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.rb +2 -0
  46. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.sws +14 -0
  47. data/examples/component_demo/PageWrapper/PageWrapper.html +23 -0
  48. data/examples/component_demo/PageWrapper/PageWrapper.rb +2 -0
  49. data/examples/component_demo/PageWrapper/PageWrapper.sws +42 -0
  50. data/examples/component_demo/README +1 -0
  51. data/examples/component_demo/RepetitionDemo/RepetitionDemo.html +13 -0
  52. data/examples/component_demo/RepetitionDemo/RepetitionDemo.rb +19 -0
  53. data/examples/component_demo/RepetitionDemo/RepetitionDemo.sws +20 -0
  54. data/examples/component_demo/StringDemo/StringDemo.html +5 -0
  55. data/examples/component_demo/StringDemo/StringDemo.rb +16 -0
  56. data/examples/component_demo/StringDemo/StringDemo.sws +14 -0
  57. data/examples/component_demo/application.yaml +28 -0
  58. data/examples/component_demo/poweredby.jpg +0 -0
  59. data/examples/component_demo/style.css +1 -0
  60. data/examples/movies/Menu/Menu.html +3 -0
  61. data/examples/movies/Menu/Menu.rb +7 -0
  62. data/examples/movies/Menu/Menu.sws +7 -0
  63. data/examples/movies/MovieBrowse/MovieBrowse.html +68 -0
  64. data/examples/movies/MovieBrowse/MovieBrowse.rb +178 -0
  65. data/examples/movies/MovieBrowse/MovieBrowse.sws +127 -0
  66. data/examples/movies/README +1 -0
  67. data/examples/movies/UserBrowse/UserBrowse.html +50 -0
  68. data/examples/movies/UserBrowse/UserBrowse.rb +69 -0
  69. data/examples/movies/UserBrowse/UserBrowse.sws +49 -0
  70. data/examples/movies/application.yaml +11 -0
  71. data/examples/movies/da.rb +36 -0
  72. data/examples/movies/dbmovies.rb +44 -0
  73. data/examples/movies/frameworks/TestFramework/framework.yaml +4 -0
  74. data/examples/movies/frameworks/TestFramework/resources/im1.jpg +0 -0
  75. data/examples/movies/images/pbr1b.jpg +0 -0
  76. data/examples/movies/movies.rb +28 -0
  77. data/examples/movies/movies.sds +119 -0
  78. data/examples/movies/movies.sqlite +0 -0
  79. data/examples/movies/movies_mysql.sql +28 -0
  80. data/examples/movies/movies_postgres.sql +27 -0
  81. data/examples/movies/movies_sqlite.sql +28 -0
  82. data/lib/sws.rb +89 -0
  83. data/lib/sws/Core/components/CheckBox/CheckBox.api +5 -0
  84. data/lib/sws/Core/components/CheckBox/CheckBox.rb +45 -0
  85. data/lib/sws/Core/components/CheckBoxList/CheckBoxList.api +13 -0
  86. data/lib/sws/Core/components/CheckBoxList/CheckBoxList.rb +54 -0
  87. data/lib/sws/Core/components/Conditional/Conditional.api +3 -0
  88. data/lib/sws/Core/components/Conditional/Conditional.html +1 -0
  89. data/lib/sws/Core/components/Conditional/Conditional.rb +39 -0
  90. data/lib/sws/Core/components/Conditional/Conditional.sws +2 -0
  91. data/lib/sws/Core/components/Content/Content.rb +18 -0
  92. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.html +13 -0
  93. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.rb +18 -0
  94. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.sws +16 -0
  95. data/lib/sws/Core/components/FileUpload/FileUpload.api +16 -0
  96. data/lib/sws/Core/components/FileUpload/FileUpload.rb +62 -0
  97. data/lib/sws/Core/components/Form/Form.api +9 -0
  98. data/lib/sws/Core/components/Form/Form.html +3 -0
  99. data/lib/sws/Core/components/Form/Form.rb +55 -0
  100. data/lib/sws/Core/components/Form/Form.sws +12 -0
  101. data/lib/sws/Core/components/GenericContainer/GenericContainer.api +10 -0
  102. data/lib/sws/Core/components/GenericContainer/GenericContainer.html +1 -0
  103. data/lib/sws/Core/components/GenericContainer/GenericContainer.rb +39 -0
  104. data/lib/sws/Core/components/GenericContainer/GenericContainer.sws +12 -0
  105. data/lib/sws/Core/components/GenericElement/GenericElement.api +10 -0
  106. data/lib/sws/Core/components/GenericElement/GenericElement.rb +34 -0
  107. data/lib/sws/Core/components/HiddenField/HiddenField.api +7 -0
  108. data/lib/sws/Core/components/HiddenField/HiddenField.rb +37 -0
  109. data/lib/sws/Core/components/Hyperlink/Hyperlink.api +13 -0
  110. data/lib/sws/Core/components/Hyperlink/Hyperlink.html +1 -0
  111. data/lib/sws/Core/components/Hyperlink/Hyperlink.rb +102 -0
  112. data/lib/sws/Core/components/Hyperlink/Hyperlink.sws +12 -0
  113. data/lib/sws/Core/components/Image/Image.api +11 -0
  114. data/lib/sws/Core/components/Image/Image.rb +49 -0
  115. data/lib/sws/Core/components/ImageButton/ImageButton.api +16 -0
  116. data/lib/sws/Core/components/ImageButton/ImageButton.rb +76 -0
  117. data/lib/sws/Core/components/Link/Link.api +11 -0
  118. data/lib/sws/Core/components/Link/Link.rb +39 -0
  119. data/lib/sws/Core/components/PasswordField/PasswordField.api +7 -0
  120. data/lib/sws/Core/components/PasswordField/PasswordField.rb +41 -0
  121. data/lib/sws/Core/components/RadioButton/RadioButton.api +7 -0
  122. data/lib/sws/Core/components/RadioButton/RadioButton.rb +44 -0
  123. data/lib/sws/Core/components/RadioButtonList/RadioButtonList.api +20 -0
  124. data/lib/sws/Core/components/RadioButtonList/RadioButtonList.rb +76 -0
  125. data/lib/sws/Core/components/Repetition/Repetition.api +10 -0
  126. data/lib/sws/Core/components/Repetition/Repetition.html +1 -0
  127. data/lib/sws/Core/components/Repetition/Repetition.rb +137 -0
  128. data/lib/sws/Core/components/Repetition/Repetition.sws +2 -0
  129. data/lib/sws/Core/components/ResetButton/ResetButton.api +5 -0
  130. data/lib/sws/Core/components/ResetButton/ResetButton.rb +28 -0
  131. data/lib/sws/Core/components/Select/Select.api +24 -0
  132. data/lib/sws/Core/components/Select/Select.rb +57 -0
  133. data/lib/sws/Core/components/String/String.api +5 -0
  134. data/lib/sws/Core/components/String/String.rb +28 -0
  135. data/lib/sws/Core/components/SubmitButton/SubmitButton.api +6 -0
  136. data/lib/sws/Core/components/SubmitButton/SubmitButton.rb +53 -0
  137. data/lib/sws/Core/components/TextArea/TextArea.api +9 -0
  138. data/lib/sws/Core/components/TextArea/TextArea.rb +28 -0
  139. data/lib/sws/Core/components/TextField/TextField.api +9 -0
  140. data/lib/sws/Core/components/TextField/TextField.rb +46 -0
  141. data/lib/sws/Core/framework.yaml +25 -0
  142. data/lib/sws/JSComponents/components/JSMenu/JSMenu.api +5 -0
  143. data/lib/sws/JSComponents/components/JSMenu/JSMenu.html +58 -0
  144. data/lib/sws/JSComponents/components/JSMenu/JSMenu.rb +34 -0
  145. data/lib/sws/JSComponents/components/JSMenu/JSMenu.sws +37 -0
  146. data/lib/sws/JSComponents/framework.yaml +3 -0
  147. data/lib/sws/adaptor.rb +334 -0
  148. data/lib/sws/application.rb +604 -0
  149. data/lib/sws/component.rb +656 -0
  150. data/lib/sws/cookie.rb +27 -0
  151. data/lib/sws/direct_action.rb +38 -0
  152. data/lib/sws/extensions.rb +49 -0
  153. data/lib/sws/parsers.rb +374 -0
  154. data/lib/sws/request.rb +308 -0
  155. data/lib/sws/response.rb +70 -0
  156. data/lib/sws/session.rb +195 -0
  157. data/lib/sws/slot.rb +198 -0
  158. metadata +263 -0
@@ -0,0 +1 @@
1
+ This directory contains example SWS applications. To start any of them, enter the directory, run the executable Ruby file and point your browser to http://localhost:1234/
@@ -0,0 +1,43 @@
1
+ <html>
2
+ <head><title>Address card browsing</title></head>
3
+ <body>
4
+ <center><h2>User <span sws="username"></span></h2></center>
5
+ <form sws="browse_form">
6
+ <table border=1>
7
+ <tr><th>First name</th><th>Last name</th><th>Actions</th></tr>
8
+ <span sws="entries_repetition">
9
+ <tr>
10
+ <td><a sws="show_details_link"><span sws="cursor_first_name_string"></span></a></td>
11
+ <td><span sws="cursor_last_name_string"></span></td>
12
+ <td><input type="submit" sws="edit_card_button"><input type="submit" sws="delete_card_button"></td>
13
+ </tr>
14
+ </span>
15
+ <tr><td colspan=3><input type="submit" sws="add_card_button"></td></tr>
16
+ <tr><td colspan=3><input type="submit" sws="save_changes_button"></td></tr>
17
+ </table>
18
+ </form>
19
+
20
+ <div sws="show_edit_conditional">
21
+ <form sws="edit_form">
22
+ <table border=1>
23
+ <tr><th>First name</th><td><input type="text" sws="edit_first_name_textfield"></td></tr>
24
+ <tr><th>Last name</th><td><input type="text" sws="edit_last_name_textfield"></td></tr>
25
+ <tr><th>Address</th><td><input type="text" sws="edit_address_textfield"></td></tr>
26
+ <tr><th>Phone</th><td><input type="text" sws="edit_phone_textfield"></td></tr>
27
+ <tr><td colspan=2><input type="submit" sws="commit_button"></td></tr>
28
+ </table>
29
+ </form>
30
+ </div>
31
+
32
+ <div sws="show_details_conditional">
33
+ <table border=1>
34
+ <tr><th>First name</th><td><span sws="details_first_name_string"></span></td></tr>
35
+ <tr><th>Last name</th><td><span sws="details_last_name_string"></span></td></tr>
36
+ <tr><th>Address</th><td><span sws="details_address_string"></span></td></tr>
37
+ <tr><th>Phone</th><td><span sws="details_phone_string"></span></td></tr>
38
+ </table>
39
+
40
+ </div>
41
+
42
+ </body>
43
+ </html>
@@ -0,0 +1,65 @@
1
+ class CardBrowse < SWS::Component
2
+
3
+ attr_accessor :card_cursor
4
+ attr_reader :selected_card, :edited_card
5
+
6
+ def delete_card ()
7
+
8
+ session.entries.delete( @card_cursor )
9
+ @selected_card = nil
10
+ @edited_card = nil
11
+
12
+ return self
13
+
14
+ end
15
+
16
+
17
+ def add_card ()
18
+
19
+ @edited_card = AddressCard.new
20
+ session.entries << @edited_card
21
+ @selected_card = nil
22
+
23
+ return self
24
+
25
+ end
26
+
27
+
28
+ def edit_card ()
29
+
30
+ @edited_card = @card_cursor
31
+ @selected_card = nil
32
+
33
+ return self
34
+
35
+ end
36
+
37
+
38
+ def show_details ()
39
+
40
+ @selected_card = @card_cursor
41
+ @edited_card = nil
42
+
43
+ return self
44
+
45
+ end
46
+
47
+
48
+ def commit_card ()
49
+
50
+ @selected_card = nil
51
+ @edited_card = nil
52
+
53
+ return self
54
+
55
+ end
56
+
57
+
58
+ def save_changes ()
59
+
60
+ app.save_db()
61
+ return self
62
+
63
+ end
64
+
65
+ end
@@ -0,0 +1,92 @@
1
+ username:
2
+ _class: SWS::String
3
+ value: session.username
4
+
5
+ browse_form:
6
+ _class: SWS::Form
7
+
8
+ entries_repetition:
9
+ _class: SWS::Repetition
10
+ list: session.entries
11
+ item: card_cursor
12
+
13
+ show_details_link:
14
+ _class: SWS::Hyperlink
15
+ action: show_details
16
+
17
+ cursor_first_name_string:
18
+ _class: SWS::String
19
+ value: card_cursor.first_name
20
+
21
+ cursor_last_name_string:
22
+ _class: SWS::String
23
+ value: card_cursor.last_name
24
+
25
+ edit_card_button:
26
+ _class: SWS::SubmitButton
27
+ value: "'Edit'"
28
+ action: edit_card
29
+
30
+ delete_card_button:
31
+ _class: SWS::SubmitButton
32
+ value: "'Delete'"
33
+ action: delete_card
34
+
35
+ add_card_button:
36
+ _class: SWS::SubmitButton
37
+ value: "'Add card'"
38
+ action: add_card
39
+
40
+ save_changes_button:
41
+ _class: SWS::SubmitButton
42
+ value: "'Save changes'"
43
+ action: save_changes
44
+
45
+ show_edit_conditional:
46
+ _class: SWS::Conditional
47
+ condition: edited_card
48
+
49
+ edit_form:
50
+ _class: SWS::Form
51
+
52
+ edit_first_name_textfield:
53
+ _class: SWS::TextField
54
+ value: edited_card.first_name
55
+
56
+ edit_last_name_textfield:
57
+ _class: SWS::TextField
58
+ value: edited_card.last_name
59
+
60
+ edit_address_textfield:
61
+ _class: SWS::TextField
62
+ value: edited_card.address
63
+
64
+ edit_phone_textfield:
65
+ _class: SWS::TextField
66
+ value: edited_card.phone
67
+
68
+ commit_button:
69
+ _class: SWS::SubmitButton
70
+ value: "'Commit'"
71
+ action: commit_card
72
+
73
+ show_details_conditional:
74
+ _class: SWS::Conditional
75
+ condition: selected_card
76
+
77
+ details_first_name_string:
78
+ _class: SWS::String
79
+ value: selected_card.first_name
80
+
81
+ details_last_name_string:
82
+ _class: SWS::String
83
+ value: selected_card.last_name
84
+
85
+ details_address_string:
86
+ _class: SWS::String
87
+ value: selected_card.address
88
+
89
+ details_phone_string:
90
+ _class: SWS::String
91
+ value: selected_card.phone
92
+
@@ -0,0 +1,12 @@
1
+ <html>
2
+ <head><title>Login page</title></head>
3
+ <body>
4
+ <center><h2><span sws="login_message"></span></h2></center>
5
+ <form sws="login_form">
6
+ <table align="center">
7
+ <tr><td><input type="text" sws="login_textfield"></td></tr>
8
+ <tr><td><input type="submit" sws="login_submit"></td></tr>
9
+ </table>
10
+ </form>
11
+ </body>
12
+ </html>
@@ -0,0 +1,19 @@
1
+ class LoginPage < SWS::Component
2
+
3
+ attr_accessor :login_name
4
+ attr_reader :login_message
5
+
6
+ def perform_login ()
7
+
8
+ unless ( @login_name )
9
+ @login_message = "Please enter a username"
10
+ return self
11
+ else
12
+ session.username = @login_name
13
+ return SWS::Component.create( "CardBrowse", @request )
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+
@@ -0,0 +1,15 @@
1
+ login_form:
2
+ _class: SWS::Form
3
+
4
+ login_textfield:
5
+ _class: SWS::TextField
6
+ value: login_name
7
+
8
+ login_submit:
9
+ _class: SWS::SubmitButton
10
+ action: perform_login
11
+ value: "'Log in'"
12
+
13
+ login_message:
14
+ _class: SWS::String
15
+ value: login_message
@@ -0,0 +1 @@
1
+ This example contains application used in tutorial. It is an extremely simple addressbook.
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #begin
4
+ # require 'rubygems'
5
+ # require_gem( 'sws', ">= 0.2.1" )
6
+ #rescue LoadError
7
+ $LOAD_PATH.unshift( "../../lib" )
8
+ require 'sws'
9
+ #end
10
+
11
+ AddressCard = Struct.new( :first_name, :last_name, :phone, :address )
12
+
13
+ class Application < SWS::Application
14
+
15
+ attr_reader :db
16
+
17
+ def initialize ( *args )
18
+
19
+ super( *args )
20
+ if ( File.exist?( "db.yaml" ) )
21
+ @db = YAML.load( File.open( "db.yaml" ) )
22
+ else
23
+ @db = Hash.new
24
+ end
25
+
26
+ end
27
+
28
+
29
+ def save_db ()
30
+ File.open( "db.yaml","w" ) { |file| file.write( @db.to_yaml ) }
31
+ end
32
+
33
+ end
34
+
35
+
36
+ class Session < SWS::Session
37
+
38
+ attr_reader :username
39
+
40
+ def entries ()
41
+
42
+ if ( @entries )
43
+ return @entries
44
+ else
45
+
46
+ @entries = Application.instance.db[@username]
47
+ unless ( @entries )
48
+ @entries = Array.new
49
+ Application.instance.db[@username] = @entries
50
+ end
51
+ return @entries
52
+
53
+ end
54
+
55
+ end
56
+
57
+
58
+ def username= ( username )
59
+
60
+ @entries = nil
61
+ @username = username
62
+
63
+ end
64
+
65
+
66
+ end
67
+
68
+
69
+ # Main program
70
+ Application.new.run()
@@ -0,0 +1,8 @@
1
+ components:
2
+ LoginPage: Login
3
+ CardBrowse: CardBrowse
4
+ frameworks:
5
+ Core: SYSTEM/sws/Core
6
+ adaptor_class: SWS::Adaptor::Standalone
7
+ session_class: Session
8
+ default_component_class: LoginPage
@@ -0,0 +1,7 @@
1
+ ---
2
+ aaa:
3
+ - !ruby/struct:AddressCard
4
+ first_name: ewfwe
5
+ last_name: ef
6
+ phone: aaa
7
+ address: fe
@@ -0,0 +1,11 @@
1
+ <span sws="page_wrapper">
2
+ <form sws="form">
3
+ <!-- Note the "type" attributes are completely optional - we added them for the sake of clarity -->
4
+ <input type="checkbox" sws="first_checkbox">First checkbox<br>
5
+ <input type="checkbox" sws="second_checkbox">Second checkbox<br>
6
+ <input type="submit" sws="submit_button"><br>
7
+ First checkbox checked: <span sws="first_checked_string"></span><br>
8
+ Second checkbox checked: <span sws="second_checked_string"></span><br>
9
+
10
+ </form>
11
+ </span>
@@ -0,0 +1,21 @@
1
+ class CheckBoxDemo < SWS::Component
2
+
3
+ attr_accessor :first_checked, :second_checked
4
+
5
+ def initialize ( *args )
6
+
7
+ super( *args )
8
+ @first_checked = false
9
+ @second_checked = true
10
+
11
+ end
12
+
13
+
14
+ def form_submitted
15
+ # This method intentionally does nothing - we just want to have
16
+ # @first_checked and @second_checked updated
17
+
18
+ return self
19
+ end
20
+
21
+ end
@@ -0,0 +1,25 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ form:
5
+ _class: SWS::Form
6
+
7
+ first_checkbox:
8
+ _class: SWS::CheckBox
9
+ checked: first_checked
10
+
11
+ second_checkbox:
12
+ _class: SWS::CheckBox
13
+ checked: second_checked
14
+
15
+ submit_button:
16
+ _class: SWS::SubmitButton
17
+ action: form_submitted
18
+
19
+ first_checked_string:
20
+ _class: SWS::String
21
+ value: first_checked
22
+
23
+ second_checked_string:
24
+ _class: SWS::String
25
+ value: second_checked
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #begin
4
+ # require "rubygems"
5
+ # require_gem( "sws", ">= 0.2.1" )
6
+ #rescue LoadError
7
+ $LOAD_PATH.unshift( "../../lib" )
8
+ require "sws"
9
+ #end
10
+
11
+ class Application < SWS::Application
12
+
13
+ end
14
+
15
+
16
+ class Session < SWS::Session
17
+
18
+ end
19
+
20
+ application = Application.new
21
+ application.run()
@@ -0,0 +1,18 @@
1
+ <span sws="page_wrapper">
2
+ <!-- This will appear on the page -->
3
+ <span sws="condition_true_negate_false">
4
+ This is content of conditional with bindings: condition - true, negate - false<br>
5
+ </span>
6
+ <!-- This will NOT appear on the page -->
7
+ <span sws="condition_true_negate_true">
8
+ This is content of conditional with bindings: condition - true, negate - true<br>
9
+ </span>
10
+ <!-- This will appear on the page -->
11
+ <span sws="condition_false_negate_true">
12
+ This is content of conditional with bindings: condition - false, negate - true<br>
13
+ </span>
14
+ <!-- This will NOT appear on the page -->
15
+ <span sws="condition_false_negate_false">
16
+ This is content of conditional with bindings: condition - false, negate - false<br>
17
+ </span>
18
+ </span>