ptero 1.0.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 (65) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +350 -0
  6. data/Rakefile +10 -0
  7. data/bin/ptero +13 -0
  8. data/lib/ptero.rb +14 -0
  9. data/lib/ptero/application.rb +281 -0
  10. data/lib/ptero/cli.rb +35 -0
  11. data/lib/ptero/cli/root.rb +282 -0
  12. data/lib/ptero/composer_default.json +8 -0
  13. data/lib/ptero/exception.rb +26 -0
  14. data/lib/ptero/exceptions/applicationexception.rb +9 -0
  15. data/lib/ptero/exceptions/generatorexception.rb +9 -0
  16. data/lib/ptero/generator.rb +146 -0
  17. data/lib/ptero/generators/applicationjavascriptgenerator.rb +19 -0
  18. data/lib/ptero/generators/applicationstylesheetgenerator.rb +18 -0
  19. data/lib/ptero/generators/configgenerator.rb +34 -0
  20. data/lib/ptero/generators/controllergenerator.rb +23 -0
  21. data/lib/ptero/generators/htaccessgenerator.rb +27 -0
  22. data/lib/ptero/generators/javascriptgenerator.rb +34 -0
  23. data/lib/ptero/generators/landinggenerator.rb +23 -0
  24. data/lib/ptero/generators/layoutgenerator.rb +19 -0
  25. data/lib/ptero/generators/loadallgenerator.rb +26 -0
  26. data/lib/ptero/generators/modelgenerator.rb +22 -0
  27. data/lib/ptero/generators/pagegenerator.rb +56 -0
  28. data/lib/ptero/generators/pagenotfoundgenerator.rb +16 -0
  29. data/lib/ptero/generators/phpclassgenerator.rb +27 -0
  30. data/lib/ptero/generators/phpgenerator.rb +18 -0
  31. data/lib/ptero/generators/phpinfogenerator.rb +16 -0
  32. data/lib/ptero/generators/routesgenerator.rb +68 -0
  33. data/lib/ptero/generators/setupgenerator.rb +13 -0
  34. data/lib/ptero/generators/stylesheetgenerator.rb +33 -0
  35. data/lib/ptero/generators/twiggenerator.rb +24 -0
  36. data/lib/ptero/generators/viewgenerator.rb +24 -0
  37. data/lib/ptero/templates/applicationjavascriptgenerator.js.erb +11 -0
  38. data/lib/ptero/templates/applicationstylesheetgenerator.css.erb +40 -0
  39. data/lib/ptero/templates/configgenerator.php.erb +26 -0
  40. data/lib/ptero/templates/controllergenerator.php.erb +25 -0
  41. data/lib/ptero/templates/generator.txt.erb +1 -0
  42. data/lib/ptero/templates/htaccessgenerator.htaccess.erb +9 -0
  43. data/lib/ptero/templates/javascriptgenerator.js.erb +11 -0
  44. data/lib/ptero/templates/landinggenerator.php.erb +3 -0
  45. data/lib/ptero/templates/layoutgenerator.html.twig.erb +37 -0
  46. data/lib/ptero/templates/loadallgenerator.php.erb +12 -0
  47. data/lib/ptero/templates/modelgenerator.php.erb +21 -0
  48. data/lib/ptero/templates/pagegenerator.html.twig.erb +13 -0
  49. data/lib/ptero/templates/pagenotfoundgenerator.html.twig.erb +13 -0
  50. data/lib/ptero/templates/phpclassgenerator.php.erb +24 -0
  51. data/lib/ptero/templates/phpgenerator.php.erb +3 -0
  52. data/lib/ptero/templates/phpinfogenerator.php.erb +3 -0
  53. data/lib/ptero/templates/routesgenerator.php.erb +13 -0
  54. data/lib/ptero/templates/setupgenerator.php.erb +19 -0
  55. data/lib/ptero/templates/stylesheetgenerator.css.erb +8 -0
  56. data/lib/ptero/templates/twiggenerator.html.twig.erb +5 -0
  57. data/lib/ptero/templates/viewgenerator.html.twig.erb +13 -0
  58. data/lib/ptero/version.rb +4 -0
  59. data/ptero.gemspec +28 -0
  60. data/test/fixtures/test_generators_fixtures.yaml +74 -0
  61. data/test/test_application.rb +123 -0
  62. data/test/test_exceptions.rb +52 -0
  63. data/test/test_generators.rb +110 -0
  64. data/test/test_root.rb +212 -0
  65. metadata +212 -0
@@ -0,0 +1,13 @@
1
+ #
2
+ #
3
+ # setupgenerator.rb
4
+ # =================
5
+ #
6
+ # Generator the "setup" files of an application that initialize the application and run the routing functions.
7
+ #
8
+ #
9
+
10
+ # A generator for "setup" files that load dependencies and initialize the application
11
+ class Ptero::Generator::SetupGenerator < Ptero::Generator::PHPGenerator
12
+
13
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # stylesheetgenerator.rb
3
+ # ======================
4
+ # Generate CSS stylesheets
5
+ #
6
+ #
7
+
8
+ # Generator for stylesheets
9
+ class Ptero::Generator::StylesheetGenerator < Ptero::Generator
10
+
11
+ # Generate with name and optional description that will be generated in a comment
12
+ # (Defaults to "The purpose of this stylesheet is...")
13
+ # @param name [String] the name of the stylesheet
14
+ # @param desc [String] a String to describe this stylesheet
15
+ def initialize(name,desc = 'The purpose of this stylesheet is...')
16
+ super name
17
+ @desc = desc
18
+ end
19
+
20
+ attr_reader :desc
21
+
22
+ # @return [String] "css"
23
+ def extension
24
+ 'css'
25
+ end
26
+
27
+ # @return [String] "www/assets/css"
28
+ def path
29
+ 'www/assets/css'
30
+ end
31
+
32
+
33
+ end
@@ -0,0 +1,24 @@
1
+ #
2
+ #
3
+ # twiggenerator.rb
4
+ # ================
5
+ #
6
+ # Generate Twig templates
7
+ # http://twig.sensiolabs.org
8
+ #
9
+
10
+ # Generator for Twig templates
11
+ class Ptero::Generator::TwigGenerator < Ptero::Generator
12
+
13
+ # @return [String] "html.twig"
14
+ def extension
15
+ 'html.twig'
16
+ end
17
+
18
+ # @return [String] "views"
19
+ def path
20
+ 'views'
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,24 @@
1
+ #
2
+ #
3
+ #
4
+ # viewgenerator.rb
5
+ # ================
6
+ #
7
+ # Generate content views for the application
8
+ #
9
+ #
10
+ #
11
+
12
+ # Generator for a view that extends a layout
13
+ class Ptero::Generator::ViewGenerator < Ptero::Generator::TwigGenerator
14
+
15
+ # @param name [String] the name of the view
16
+ # @param parent [String] the name of the layout to extend
17
+ def initialize(name,parent='application')
18
+ super(name)
19
+ @parent = parent
20
+ end
21
+
22
+ attr_reader :parent
23
+
24
+ end
@@ -0,0 +1,11 @@
1
+ /*
2
+ * <%= filename %>
3
+ * <%= '=' * filename.length %>
4
+ * <%= desc %>
5
+ *
6
+ */
7
+
8
+
9
+ $(function() {
10
+ console.log('Loaded <%= filename %>')
11
+ });
@@ -0,0 +1,40 @@
1
+ /*
2
+ * <%= filename %>
3
+ * <%= '=' * filename.length %>
4
+ * <%= desc %>
5
+ *
6
+ *
7
+ *
8
+ */
9
+
10
+ body {
11
+ font-family: sans-serif;
12
+ background-color: #eee;
13
+ }
14
+
15
+ div.header {
16
+ background-color: white;
17
+ padding: 1px 0px;
18
+ }
19
+
20
+ div.container {
21
+ background-color: #25c;
22
+ width: 650px;
23
+ height: 610px;
24
+ margin: 10px auto;
25
+ padding: 20px;
26
+ text-align: center;
27
+ border-radius: 3px;
28
+ }
29
+
30
+ div.content {
31
+ background-color: white;
32
+ width: 650px;
33
+ height: 520px;
34
+ margin: 10px auto;
35
+ padding: 3px 0px;
36
+ }
37
+
38
+ div.curvycorners {
39
+ border-radius: 3px;
40
+ }
@@ -0,0 +1,26 @@
1
+ <?php
2
+ /*
3
+ * config.php
4
+ * return array of configuration values
5
+ *
6
+ *
7
+ *
8
+ */
9
+
10
+
11
+ return array(
12
+ <% options.each_pair do |key,value| %>
13
+ <% next if key == :database %>
14
+ '<%= key %>' => '<%= value %>',
15
+
16
+ <% end %>
17
+
18
+
19
+ 'database' => array(
20
+ 'name' => '<%= options[:database][:name] %>',
21
+ 'user' => '<%= options[:database][:user] %>',
22
+ 'password' => '<%= options[:database][:password] %>',
23
+ 'server' => '<%= options[:database][:server] %>'
24
+ )
25
+ )
26
+ ?>
@@ -0,0 +1,25 @@
1
+ <?php
2
+
3
+ /*
4
+ *
5
+ * <%= filename %>
6
+ * <%= '=' * filename.length %>
7
+ * This controller does ...
8
+ *
9
+ */
10
+
11
+ namespace <%= app.name.capitalize %>\Controllers;
12
+
13
+
14
+ class <%= name %> extends <%= parent %> {
15
+
16
+ // Handle GET requests, use 'public function post()' to handle POST
17
+ public function get() {
18
+ // Render template
19
+ $this->render();
20
+ }
21
+
22
+ }
23
+
24
+
25
+ ?>
@@ -0,0 +1 @@
1
+ Generated at <%= Time.now %>
@@ -0,0 +1,9 @@
1
+ Options -Indexes
2
+
3
+ DirectoryIndex /index.php
4
+
5
+ RewriteEngine on
6
+ RewriteCond %{REQUEST_FILENAME} !-f
7
+ RewriteCond %{REQUEST_FILENAME} !-d
8
+ RewriteCond $1 !^(index\.php)
9
+ RewriteRule ^(.*)$ /index.php/$1 [L]
@@ -0,0 +1,11 @@
1
+ /*
2
+ * <%= filename %>
3
+ * <%= '=' * filename.length %>
4
+ * <%= desc %>
5
+ *
6
+ */
7
+
8
+
9
+ $(function() {
10
+ console.log('Loaded <%= filename %>')
11
+ });
@@ -0,0 +1,3 @@
1
+ <?php
2
+ require_once __DIR__ . '/../php/<%= app.name %>.php';
3
+ ?>
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>{{ pagetitle ? '<%= app.name %> - ' ~ pagetitle : '<%= app.name %>' }}</title>
5
+
6
+ <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><!-- Thanks jQuery!! -->
7
+ <script type="text/javascript" src="/assets/js/application.js"></script>
8
+ <link rel="stylesheet" type="text/css" href="/assets/css/application.css" />
9
+
10
+
11
+ {% block head %}
12
+ {% endblock %}
13
+
14
+ <!-- https://github.com/luminousrubyist/ptero -->
15
+ </head>
16
+ <body>
17
+ {% block body %}
18
+
19
+ <div class="container curvycorners">
20
+ <div class="header curvycorners">
21
+ <h1><%= app.name %></h1>
22
+ </div>
23
+ <div class="content curvycorners">
24
+ {% block content %}
25
+ {% autoescape false %}
26
+
27
+ <!-- content -->
28
+ {{ content }}
29
+
30
+ {% endautoescape %}
31
+ {% endblock %}
32
+ </div>
33
+ </div>
34
+
35
+ {% endblock %}
36
+ </body>
37
+ </html>
@@ -0,0 +1,12 @@
1
+ <?php
2
+
3
+ <% priorities.each do |name| %>
4
+ require_once '<%= name %>.php';
5
+ <% end %>
6
+
7
+ foreach(glob(__DIR__ . '/*.php') as $filename) {
8
+ require_once $filename;
9
+ }
10
+
11
+
12
+ ?>
@@ -0,0 +1,21 @@
1
+ <?php
2
+
3
+ /* Current Database specification
4
+ * [Your-database-name]/[table-name]
5
+ * List fields here: e.g. for a Post class:
6
+ * autoincrement primarykey int post_id
7
+ * varchar(15) post_title
8
+ * text post_content
9
+ * bigint(20) post_timestamp
10
+ * varchar(15) post_author
11
+ *
12
+ */
13
+
14
+
15
+ namespace <%= app.name.capitalize %>\Models;
16
+
17
+ class <%= name %> extends \ActiveRecord\Model {
18
+
19
+ }
20
+
21
+ ?>
@@ -0,0 +1,13 @@
1
+ {% extends '<%= parent %>.html.twig' %}
2
+
3
+ {% block head %}
4
+ <!-- HTML head code produced by view: <%= name %> -->
5
+ <script type="text/javascript" src="/assets/js/<%= name.downcase %>.js"></script>
6
+ <link rel="stylesheet" type="text/css" src="/assets/css/<%= name.downcase %>.css" />
7
+ {% endblock %}
8
+
9
+ {% block content %}
10
+ <!-- HTML content code produced by view: <%= name %> -->
11
+ <h2>View: <%= filename %></h2>
12
+
13
+ {% endblock %}
@@ -0,0 +1,13 @@
1
+ {% extends '<%= parent %>.html.twig' %}
2
+
3
+ {% block head %}
4
+ <!-- HTML head code produced by view: <%= name %> -->
5
+ {% endblock %}
6
+
7
+ {% block content %}
8
+ <!-- HTML content code produced by view: <%= name %> -->
9
+ <h3 class="message">
10
+ 404 - Page not found
11
+ </h3>
12
+
13
+ {% endblock %}
@@ -0,0 +1,24 @@
1
+ <?php
2
+
3
+
4
+ /*
5
+ *
6
+ * <%= filename %>
7
+ * <%= '=' * filename.length %>
8
+ * This class does ...
9
+ *
10
+ */
11
+
12
+
13
+
14
+ namespace <%= app.name.capitalize %>;
15
+
16
+
17
+ class <%= name %> <%= !parent.nil? && "extends #{parent}" %> {
18
+
19
+
20
+
21
+ }
22
+
23
+
24
+ ?>
@@ -0,0 +1,3 @@
1
+ <?php
2
+ echo 'Generated at <%= Time.now %>'
3
+ ?>
@@ -0,0 +1,3 @@
1
+ <?
2
+ phpinfo();
3
+ ?>
@@ -0,0 +1,13 @@
1
+ <?php
2
+
3
+ // Application route maps
4
+ $application->route(array(
5
+
6
+ <% routes.each_pair do |key,value| %>
7
+ '<%= key %>' => '<%= app.name.capitalize %>\Controllers\<%= value %>Controller',
8
+ <% end %>
9
+ ));
10
+
11
+
12
+
13
+ ?>
@@ -0,0 +1,19 @@
1
+ <?php
2
+ /*
3
+ * This is the main landing page for the website. All traffic should be directed here.
4
+ * It requires composer dependencies, then creates $application as a singleton instance of the
5
+ * \Dinosaur\Application class.
6
+ * The application then runs the routes file, starting the rendering process
7
+ *
8
+ */
9
+
10
+ // Get dependencies
11
+ require_once __DIR__ . '/../vendor/autoload.php';
12
+
13
+ // Initialize application
14
+ $application = \Dinosaur\Application::getInstance();
15
+
16
+ // Run routing
17
+ require_once 'routes.php';
18
+
19
+ ?>
@@ -0,0 +1,8 @@
1
+ /*
2
+ * <%= filename %>
3
+ * <%= '=' * filename.length %>
4
+ * <%= desc %>
5
+ *
6
+ *
7
+ *
8
+ */
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <body>
3
+ {{ <%= "Generated at #{Time.now}" }}
4
+ </body>
5
+ </html>
@@ -0,0 +1,13 @@
1
+ {% extends '<%= parent %>.html.twig' %}
2
+
3
+ {% block head %}
4
+ <!-- HTML head code produced by view: <%= name %> -->
5
+
6
+
7
+ {% endblock %}
8
+
9
+ {% block content %}
10
+ <!-- HTML content code produced by view: <%= name %> -->
11
+ <h2>View: <%= filename %></h2>
12
+
13
+ {% endblock %}