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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +350 -0
- data/Rakefile +10 -0
- data/bin/ptero +13 -0
- data/lib/ptero.rb +14 -0
- data/lib/ptero/application.rb +281 -0
- data/lib/ptero/cli.rb +35 -0
- data/lib/ptero/cli/root.rb +282 -0
- data/lib/ptero/composer_default.json +8 -0
- data/lib/ptero/exception.rb +26 -0
- data/lib/ptero/exceptions/applicationexception.rb +9 -0
- data/lib/ptero/exceptions/generatorexception.rb +9 -0
- data/lib/ptero/generator.rb +146 -0
- data/lib/ptero/generators/applicationjavascriptgenerator.rb +19 -0
- data/lib/ptero/generators/applicationstylesheetgenerator.rb +18 -0
- data/lib/ptero/generators/configgenerator.rb +34 -0
- data/lib/ptero/generators/controllergenerator.rb +23 -0
- data/lib/ptero/generators/htaccessgenerator.rb +27 -0
- data/lib/ptero/generators/javascriptgenerator.rb +34 -0
- data/lib/ptero/generators/landinggenerator.rb +23 -0
- data/lib/ptero/generators/layoutgenerator.rb +19 -0
- data/lib/ptero/generators/loadallgenerator.rb +26 -0
- data/lib/ptero/generators/modelgenerator.rb +22 -0
- data/lib/ptero/generators/pagegenerator.rb +56 -0
- data/lib/ptero/generators/pagenotfoundgenerator.rb +16 -0
- data/lib/ptero/generators/phpclassgenerator.rb +27 -0
- data/lib/ptero/generators/phpgenerator.rb +18 -0
- data/lib/ptero/generators/phpinfogenerator.rb +16 -0
- data/lib/ptero/generators/routesgenerator.rb +68 -0
- data/lib/ptero/generators/setupgenerator.rb +13 -0
- data/lib/ptero/generators/stylesheetgenerator.rb +33 -0
- data/lib/ptero/generators/twiggenerator.rb +24 -0
- data/lib/ptero/generators/viewgenerator.rb +24 -0
- data/lib/ptero/templates/applicationjavascriptgenerator.js.erb +11 -0
- data/lib/ptero/templates/applicationstylesheetgenerator.css.erb +40 -0
- data/lib/ptero/templates/configgenerator.php.erb +26 -0
- data/lib/ptero/templates/controllergenerator.php.erb +25 -0
- data/lib/ptero/templates/generator.txt.erb +1 -0
- data/lib/ptero/templates/htaccessgenerator.htaccess.erb +9 -0
- data/lib/ptero/templates/javascriptgenerator.js.erb +11 -0
- data/lib/ptero/templates/landinggenerator.php.erb +3 -0
- data/lib/ptero/templates/layoutgenerator.html.twig.erb +37 -0
- data/lib/ptero/templates/loadallgenerator.php.erb +12 -0
- data/lib/ptero/templates/modelgenerator.php.erb +21 -0
- data/lib/ptero/templates/pagegenerator.html.twig.erb +13 -0
- data/lib/ptero/templates/pagenotfoundgenerator.html.twig.erb +13 -0
- data/lib/ptero/templates/phpclassgenerator.php.erb +24 -0
- data/lib/ptero/templates/phpgenerator.php.erb +3 -0
- data/lib/ptero/templates/phpinfogenerator.php.erb +3 -0
- data/lib/ptero/templates/routesgenerator.php.erb +13 -0
- data/lib/ptero/templates/setupgenerator.php.erb +19 -0
- data/lib/ptero/templates/stylesheetgenerator.css.erb +8 -0
- data/lib/ptero/templates/twiggenerator.html.twig.erb +5 -0
- data/lib/ptero/templates/viewgenerator.html.twig.erb +13 -0
- data/lib/ptero/version.rb +4 -0
- data/ptero.gemspec +28 -0
- data/test/fixtures/test_generators_fixtures.yaml +74 -0
- data/test/test_application.rb +123 -0
- data/test/test_exceptions.rb +52 -0
- data/test/test_generators.rb +110 -0
- data/test/test_root.rb +212 -0
- 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,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,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,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,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,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 %}
|