reviser 0.0.1.1.pre.beta → 0.0.2.rc1
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 +4 -4
- data/Gemfile +18 -0
- data/README.md +46 -0
- data/ext/valgrind.rb +21 -18
- data/ext/web_validators.rb +132 -0
- data/lang/HTML.yml +2 -14
- data/lib/component.rb +41 -39
- data/lib/components/archiver.rb +105 -101
- data/lib/components/checker.rb +46 -52
- data/lib/components/extractors.rb +121 -120
- data/lib/components/generator.rb +40 -37
- data/lib/components/generators.rb +113 -109
- data/lib/components/organiser.rb +165 -153
- data/lib/config.rb +53 -35
- data/lib/criteria/code_analysis.rb +54 -0
- data/lib/criteria/compilation.rb +42 -0
- data/lib/criteria/execution.rb +78 -0
- data/lib/exec.rb +109 -94
- data/lib/helpers/criteria.rb +152 -154
- data/lib/helpers/git.rb +23 -21
- data/lib/helpers/project.rb +198 -19
- data/lib/helpers/system.rb +50 -39
- data/lib/loggers/logger.rb +39 -30
- data/lib/loggers/modes.rb +118 -54
- data/lib/reviser.rb +63 -41
- data/res/css/style_logs.css +166 -0
- data/res/css/web_validators/css-base.css +733 -0
- data/res/css/web_validators/css-results.css +257 -0
- data/res/css/web_validators/html-base.css +746 -0
- data/res/css/web_validators/html-results.css +489 -0
- data/res/labys/labfich11.txt +19 -0
- data/res/labys/test.txt +3 -0
- data/res/labys/yoda.txt +19 -0
- data/res/scss/style_logs.scss +134 -0
- data/type/JavaProject.yml +18 -0
- data/type/Pendu.yml +22 -0
- data/type/Web.yml +23 -0
- metadata +144 -10
- data/ext/html_validator.rb +0 -21
- data/lib/helpers/code_analysis.rb +0 -64
- data/lib/helpers/compilation.rb +0 -40
- data/lib/helpers/execution.rb +0 -83
- data/lib/project.rb +0 -155
data/lib/helpers/system.rb
CHANGED
@@ -1,56 +1,67 @@
|
|
1
1
|
#
|
2
2
|
# @author Renan Strauss
|
3
3
|
#
|
4
|
+
require 'open3'
|
5
|
+
require 'timeout'
|
4
6
|
|
5
|
-
module
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
|
15
|
-
process_status = -1
|
7
|
+
module Reviser
|
8
|
+
module Helpers
|
9
|
+
module System
|
10
|
+
#
|
11
|
+
# @return the first executable found
|
12
|
+
#
|
13
|
+
def find_executable
|
14
|
+
Dir['*'].select { |f| File.executable?(f) && !File.directory?(f) }.first
|
15
|
+
end
|
16
16
|
|
17
|
-
stdin.close
|
18
17
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# return at the end if it failed to complete
|
24
|
-
# before time runs out.
|
18
|
+
# Executes the given command
|
19
|
+
# and kills it if its execution
|
20
|
+
# time > timeout
|
21
|
+
# @returns stdout, stderr & process_status
|
25
22
|
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
23
|
+
def exec_with_timeout(cmd, timeout = Cfg[:timeout])
|
24
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
|
25
|
+
process_status = -1
|
26
|
+
|
27
|
+
stdin.close
|
31
28
|
#
|
32
|
-
#
|
33
|
-
#
|
29
|
+
# We try to wait for the thread to join
|
30
|
+
# during the given timeout.
|
31
|
+
# When the thread has joined, process_status
|
32
|
+
# will be an object, so we can check and
|
33
|
+
# return at the end if it failed to complete
|
34
|
+
# before time runs out.
|
34
35
|
#
|
35
36
|
begin
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
Timeout.timeout(timeout) do
|
38
|
+
process_status = wait_thr.value
|
39
|
+
end
|
40
|
+
rescue Timeout::Error
|
41
|
+
#
|
42
|
+
# Then whether it suceeded or not,
|
43
|
+
# we kill the process
|
44
|
+
#
|
45
|
+
begin
|
46
|
+
Process.kill('KILL', wait_thr[:pid])
|
47
|
+
rescue Object => e
|
48
|
+
$stderr << "Unable to kill process : #{e.to_s}"
|
49
|
+
end
|
39
50
|
end
|
40
|
-
end
|
41
51
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
52
|
+
result = {
|
53
|
+
:stdout => process_status == -1 && 'Timeout' || stdout.read,
|
54
|
+
:stderr => process_status == -1 && 'Timeout' || stderr.read,
|
55
|
+
:process_status => process_status == -1 && 'Timeout' || process_status
|
56
|
+
}
|
57
|
+
|
58
|
+
result.delete :process_status unless process_status != -1
|
49
59
|
|
50
|
-
|
51
|
-
|
60
|
+
stdout.close
|
61
|
+
stderr.close
|
52
62
|
|
53
|
-
|
63
|
+
result
|
64
|
+
end
|
54
65
|
end
|
55
66
|
end
|
56
67
|
end
|
data/lib/loggers/logger.rb
CHANGED
@@ -1,41 +1,50 @@
|
|
1
1
|
require 'logger'
|
2
2
|
require_relative 'modes'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
#
|
10
|
-
module Loggers
|
11
|
-
class Logger
|
12
|
-
|
13
|
-
# Create logger.
|
14
|
-
# The extension determines the mode to use (logger mode).
|
15
|
-
# @filename
|
16
|
-
def initialize filename
|
17
|
-
|
18
|
-
ext = File.extname(filename).delete '.'
|
19
|
-
# Include mode aksed by user (config file)
|
20
|
-
begin
|
21
|
-
self.class.send :include, Modes.const_get("#{ext.downcase.capitalize}")
|
22
|
-
rescue => e
|
23
|
-
self.class.send :include, Modes::Txt
|
4
|
+
module Reviser
|
5
|
+
module Loggers
|
6
|
+
|
7
|
+
class Logger::LogDevice
|
8
|
+
def add_log_header(file)
|
24
9
|
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# Custom logger of Reviser.
|
13
|
+
# This class is a adapter.
|
14
|
+
# We used the standard Logger included in Ruby.
|
15
|
+
#
|
16
|
+
# @author Yann Prono
|
17
|
+
#
|
18
|
+
class Logger
|
19
|
+
|
20
|
+
# Creates logger.
|
21
|
+
# The extension determines the mode to use (logger mode).
|
22
|
+
# @param filename [String] name of logger.
|
23
|
+
def initialize filename
|
24
|
+
ext = File.extname filename
|
25
|
+
@basename = File.basename filename, ext
|
26
|
+
ext = ext.delete '.'
|
27
|
+
# Include mode aksed by user (config file)
|
28
|
+
begin
|
29
|
+
self.class.send :prepend, Modes.const_get("#{ext.downcase.capitalize}")
|
30
|
+
rescue => e
|
31
|
+
self.class.send :include, Modes::Txt
|
32
|
+
end
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
|
34
|
+
@logger = ::Logger.new File.open(filename, 'w')
|
35
|
+
@logger.level = ::Logger::DEBUG
|
36
|
+
end
|
29
37
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
38
|
+
# Closes the logger
|
39
|
+
def close
|
40
|
+
@logger.close
|
41
|
+
end
|
34
42
|
|
35
|
-
|
36
|
-
|
43
|
+
# In case of someone want to use methods of standard Logger ...
|
44
|
+
def method_missing(m, *args, &block)
|
37
45
|
@logger.send(m,*args, &block)
|
38
|
-
|
46
|
+
end
|
39
47
|
|
48
|
+
end
|
40
49
|
end
|
41
50
|
end
|
data/lib/loggers/modes.rb
CHANGED
@@ -1,74 +1,138 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
3
|
+
module Reviser
|
4
|
+
module Loggers
|
5
|
+
|
6
|
+
#
|
7
|
+
# Module containing all methods to custom logger.
|
8
|
+
#
|
9
|
+
# There are 3 main levels of logger
|
10
|
+
# => h1 : Big title
|
11
|
+
# => h2 : medium title
|
12
|
+
# => h3 : tiny title
|
13
|
+
#
|
14
|
+
# @author Yann Prono
|
15
|
+
# @author Anthony Cerf
|
16
|
+
# @author Romain Ruez
|
17
|
+
#
|
18
|
+
module Modes
|
19
|
+
|
20
|
+
module Txt
|
21
|
+
|
22
|
+
include Modes
|
23
|
+
|
24
|
+
def h1 severity, msg
|
25
|
+
change_formatter ''
|
26
|
+
@logger.add severity, msg
|
27
|
+
end
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
|
29
|
+
def h2 severity, msg
|
30
|
+
change_formatter "\t\t"
|
31
|
+
@logger.add severity, msg
|
32
|
+
end
|
33
|
+
|
34
|
+
def h3 severity, msg
|
35
|
+
change_formatter "\t\t\t"
|
36
|
+
@logger.add severity, msg
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
|
-
|
31
|
-
|
32
|
-
|
40
|
+
module Org
|
41
|
+
|
42
|
+
include Modes
|
43
|
+
|
44
|
+
def h1 severity, msg
|
45
|
+
change_formatter '*'
|
46
|
+
@logger.add severity, msg
|
47
|
+
end
|
48
|
+
|
49
|
+
def h2 severity, msg
|
50
|
+
change_formatter "**"
|
51
|
+
@logger.add severity, msg
|
52
|
+
end
|
53
|
+
|
54
|
+
def h3 severity, msg
|
55
|
+
change_formatter "***"
|
56
|
+
@logger.add severity, msg
|
57
|
+
end
|
58
|
+
|
33
59
|
end
|
34
|
-
|
60
|
+
|
61
|
+
module Html
|
62
|
+
include Modes
|
63
|
+
|
64
|
+
@add_header = false
|
65
|
+
def header
|
66
|
+
add_tag "<!DOCTYPE html><html><head>
|
67
|
+
<meta charset= \"UTF-8\">
|
68
|
+
<link rel=\"stylesheet\" href=\"#{File.expand_path(File.join(Cfg[:res_dir],'/css/style_logs.css'))}\" />
|
69
|
+
<title>#{@basename} logs</title>
|
70
|
+
</head>\n<body>
|
71
|
+
<header>
|
72
|
+
<p>#{@basename} logs</p>\n</header>\n<section>"
|
73
|
+
@add_header = true
|
74
|
+
end
|
35
75
|
|
36
|
-
|
76
|
+
def h1 severity,msg
|
77
|
+
header unless @add_header
|
78
|
+
change_formatter "<h1 class=\"#{severity_to_s(severity)}\">" , '</h1>'
|
79
|
+
@logger.add severity , msg
|
80
|
+
end
|
81
|
+
|
82
|
+
def h2 severity,msg
|
83
|
+
header unless @add_header
|
84
|
+
change_formatter "<h2 class=\"#{severity_to_s(severity)}\">" , '</h2>'
|
85
|
+
@logger.add severity , msg
|
86
|
+
end
|
87
|
+
|
88
|
+
def h3 severity,msg
|
89
|
+
header unless @add_header
|
90
|
+
change_formatter "<h3 class=\"#{severity_to_s(severity)}\">", '</h3>'
|
91
|
+
@logger.add severity , msg
|
92
|
+
end
|
37
93
|
|
38
|
-
|
94
|
+
def close
|
95
|
+
add_tag '</section></body></html>'
|
96
|
+
@logger.close
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
39
101
|
|
40
|
-
|
41
|
-
|
42
|
-
|
102
|
+
# Changes formatter of logger.
|
103
|
+
# @param prefix [String] Prefix to put before any content.
|
104
|
+
# @param suffix [String] Suffix to put after all contents.
|
105
|
+
def change_formatter prefix , suffix = ''
|
106
|
+
@logger.formatter = proc do |severity, datetime, progname, msg|
|
107
|
+
"\n#{prefix} #{severity} #{msg} #{suffix}"
|
108
|
+
end
|
43
109
|
end
|
44
110
|
|
45
|
-
|
46
|
-
|
47
|
-
@logger.
|
111
|
+
# Creates a new line.
|
112
|
+
def newline
|
113
|
+
@logger.formatter = proc do |severity, datetime, progname, msg|
|
114
|
+
"\n#{msg}"
|
115
|
+
end
|
116
|
+
@logger.add(nil,"\n")
|
48
117
|
end
|
49
118
|
|
50
|
-
|
51
|
-
|
52
|
-
|
119
|
+
# Mainly used for HTML mode.
|
120
|
+
# @param tag [String] tag added.
|
121
|
+
def add_tag tag
|
122
|
+
@logger.formatter = proc do |severity, datetime, progname, msg|
|
123
|
+
"\n#{msg}"
|
124
|
+
end
|
125
|
+
@logger.add(nil,tag)
|
53
126
|
end
|
54
127
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
"\n#{prefix} #{severity} #{msg}"
|
128
|
+
# converts a severity level to a String.
|
129
|
+
# @param severity [Integer] Level of severity.
|
130
|
+
# @return [String] String of severity.
|
131
|
+
def severity_to_s severity
|
132
|
+
sev_labels = %w(DEBUG INFO WARN ERROR FATAL ANY)
|
133
|
+
sev_labels[severity].downcase
|
62
134
|
end
|
63
|
-
end
|
64
135
|
|
65
|
-
# Create new line
|
66
|
-
def newline
|
67
|
-
@logger.formatter = proc do |severity, datetime, progname, msg|
|
68
|
-
"\n#{msg}"
|
69
|
-
end
|
70
|
-
@logger.add(nil,"\n")
|
71
136
|
end
|
72
|
-
|
73
137
|
end
|
74
138
|
end
|
data/lib/reviser.rb
CHANGED
@@ -9,60 +9,82 @@
|
|
9
9
|
# about the data these components exchange.
|
10
10
|
#
|
11
11
|
require 'mkmf'
|
12
|
+
require 'colorize'
|
12
13
|
|
13
14
|
require_relative 'component'
|
14
15
|
require_relative 'config'
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
require_relative 'helpers/git'
|
18
|
+
require_relative 'helpers/project'
|
19
|
+
require_relative 'helpers/system'
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# TODO : check data
|
25
|
-
#
|
26
|
-
def self.load(data)
|
27
|
-
@@loaded_components[data[:component]] = {inputFrom: data[:inputFrom], data: nil}
|
28
|
-
end
|
21
|
+
module Reviser
|
22
|
+
class Reviser
|
23
|
+
@@setup = false
|
24
|
+
@@loaded_components = {}
|
29
25
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
#
|
27
|
+
# Adds an entry with the specified data.
|
28
|
+
# At this time, we assume the user has given us
|
29
|
+
# a Cfg that makes sense.
|
30
|
+
# TODO : check data
|
31
|
+
#
|
32
|
+
def self.load(data)
|
33
|
+
data[:local] ||= false
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
@@loaded_components.store data[:component],
|
36
|
+
{
|
37
|
+
:inputFrom => data[:inputFrom],
|
38
|
+
:local => data[:local],
|
39
|
+
:data => nil
|
40
|
+
}
|
41
|
+
end
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
def self.setup(config_file)
|
44
|
+
@@setup = true
|
45
|
+
Cfg.load config_file
|
44
46
|
end
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
+
#
|
49
|
+
# Basically runs each loaded component.
|
50
|
+
# The exection order is based on the loading order.
|
51
|
+
#
|
52
|
+
def self.run
|
53
|
+
raise ArgumentError unless @@setup
|
48
54
|
|
49
|
-
|
50
|
-
|
55
|
+
if Cfg.has_key?(:options) && Cfg[:options].has_key?(:log_dir)
|
56
|
+
FileUtils.mkdir Cfg[:options][:log_dir] unless Dir.exist? Cfg[:options][:log_dir]
|
57
|
+
end
|
51
58
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
59
|
+
#
|
60
|
+
# Need to change this ASAP in order to
|
61
|
+
# let users load their own components
|
62
|
+
#
|
63
|
+
@@loaded_components.each do |comp, conf|
|
64
|
+
puts "Reviser is now running "+"#{Reviser.titleize comp}".green + "..."
|
56
65
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
66
|
+
require_relative "components/#{comp}" unless conf[:local]
|
67
|
+
|
68
|
+
namespace = conf[:local] && '' || 'Components'
|
69
|
+
param = ((conf[:inputFrom] != nil) && @@loaded_components[conf[:inputFrom]][:data]) || nil
|
70
|
+
|
71
|
+
c = eval("#{namespace}::#{Reviser.titleize comp}").new param
|
72
|
+
|
73
|
+
@@loaded_components[comp][:data] = c.work
|
74
|
+
|
75
|
+
puts 'Done'
|
76
|
+
end
|
61
77
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
78
|
+
# To handle multiple loads
|
79
|
+
# and calls to run
|
80
|
+
@@loaded_components = {}
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# Quite handy
|
85
|
+
#
|
86
|
+
def self.titleize(str)
|
87
|
+
str.split(/ |\_/).map(&:capitalize).join('')
|
88
|
+
end
|
67
89
|
end
|
68
90
|
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
/* Imports */
|
2
|
+
/** *****************
|
3
|
+
* Variables *
|
4
|
+
*****************
|
5
|
+
*/
|
6
|
+
/* line 22, ../scss/style_logs.scss */
|
7
|
+
html, body, h1, h2, h3, header {
|
8
|
+
padding: 0px;
|
9
|
+
margin: 0px;
|
10
|
+
font-family: sans-serif;
|
11
|
+
}
|
12
|
+
|
13
|
+
/* line 28, ../scss/style_logs.scss */
|
14
|
+
body {
|
15
|
+
background-color: #e6e6e6;
|
16
|
+
}
|
17
|
+
|
18
|
+
/* line 32, ../scss/style_logs.scss */
|
19
|
+
header {
|
20
|
+
display: inline-block;
|
21
|
+
width: 100%;
|
22
|
+
height: 4em;
|
23
|
+
margin-bottom: 4%;
|
24
|
+
background-color: #1B3147;
|
25
|
+
border-bottom: 2px solid #8d98a3;
|
26
|
+
}
|
27
|
+
/* line 41, ../scss/style_logs.scss */
|
28
|
+
header p {
|
29
|
+
text-align: center;
|
30
|
+
text-transform: uppercase;
|
31
|
+
font-weight: bold;
|
32
|
+
color: white;
|
33
|
+
}
|
34
|
+
/* line 48, ../scss/style_logs.scss */
|
35
|
+
header:before {
|
36
|
+
content: '';
|
37
|
+
display: inline-block;
|
38
|
+
width: 50px;
|
39
|
+
height: 50px;
|
40
|
+
position: absolute;
|
41
|
+
left: 50%;
|
42
|
+
top: 4em;
|
43
|
+
-moz-transform: translate(-27px, -22px);
|
44
|
+
-ms-transform: translate(-27px, -22px);
|
45
|
+
-webkit-transform: translate(-27px, -22px);
|
46
|
+
transform: translate(-27px, -22px);
|
47
|
+
background: white url("http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Ruby_logo.svg/50px-Ruby_logo.svg.png");
|
48
|
+
background-repeat: no-repeat;
|
49
|
+
background-position: center;
|
50
|
+
-moz-background-size: 32px, 32px;
|
51
|
+
-o-background-size: 32px, 32px;
|
52
|
+
-webkit-background-size: 32px, 32px;
|
53
|
+
background-size: 32px, 32px;
|
54
|
+
border: 2px solid #a30000;
|
55
|
+
-moz-border-radius: 50%;
|
56
|
+
-webkit-border-radius: 50%;
|
57
|
+
border-radius: 50%;
|
58
|
+
}
|
59
|
+
|
60
|
+
/* line 68, ../scss/style_logs.scss */
|
61
|
+
section {
|
62
|
+
display: inline-block;
|
63
|
+
width: 90%;
|
64
|
+
margin-left: 5%;
|
65
|
+
margin-bottom: 2%;
|
66
|
+
border-left: 4px solid #3c4952;
|
67
|
+
-moz-box-sizing: border-box;
|
68
|
+
-webkit-box-sizing: border-box;
|
69
|
+
box-sizing: border-box;
|
70
|
+
}
|
71
|
+
|
72
|
+
/* line 78, ../scss/style_logs.scss */
|
73
|
+
h1, h2, h3 {
|
74
|
+
display: block;
|
75
|
+
width: 100%;
|
76
|
+
position: relative;
|
77
|
+
padding-left: 1.2em;
|
78
|
+
margin-top: 15px;
|
79
|
+
-moz-box-sizing: border-box;
|
80
|
+
-webkit-box-sizing: border-box;
|
81
|
+
box-sizing: border-box;
|
82
|
+
color: #3c4952;
|
83
|
+
}
|
84
|
+
/* line 88, ../scss/style_logs.scss */
|
85
|
+
h1:before, h2:before, h3:before {
|
86
|
+
content: '';
|
87
|
+
display: inline-block;
|
88
|
+
width: 20px;
|
89
|
+
height: 100%;
|
90
|
+
position: absolute;
|
91
|
+
top: 0;
|
92
|
+
left: -12px;
|
93
|
+
border-radius: 4px;
|
94
|
+
background-color: #c0392b;
|
95
|
+
}
|
96
|
+
|
97
|
+
/* line 102, ../scss/style_logs.scss */
|
98
|
+
h1 {
|
99
|
+
font-size: 2em;
|
100
|
+
}
|
101
|
+
|
102
|
+
/* line 103, ../scss/style_logs.scss */
|
103
|
+
h2 {
|
104
|
+
font-size: 1.2em;
|
105
|
+
padding-left: 3em;
|
106
|
+
}
|
107
|
+
|
108
|
+
/* line 104, ../scss/style_logs.scss */
|
109
|
+
h3 {
|
110
|
+
font-size: 0.8em;
|
111
|
+
padding-left: 6em;
|
112
|
+
}
|
113
|
+
|
114
|
+
/* line 106, ../scss/style_logs.scss */
|
115
|
+
section h1:first-child {
|
116
|
+
margin-top: -1px;
|
117
|
+
}
|
118
|
+
|
119
|
+
/* line 109, ../scss/style_logs.scss */
|
120
|
+
section h1:last-child {
|
121
|
+
margin-bottom: -1px;
|
122
|
+
}
|
123
|
+
|
124
|
+
/* line 113, ../scss/style_logs.scss */
|
125
|
+
.info:before {
|
126
|
+
background-color: #27ae60;
|
127
|
+
}
|
128
|
+
|
129
|
+
/* line 117, ../scss/style_logs.scss */
|
130
|
+
.error:before {
|
131
|
+
background-color: #c0392b;
|
132
|
+
}
|
133
|
+
|
134
|
+
/* line 121, ../scss/style_logs.scss */
|
135
|
+
.debug:before {
|
136
|
+
background-color: #F49C37;
|
137
|
+
}
|
138
|
+
|
139
|
+
@media all and (max-width: 700px) {
|
140
|
+
/* line 126, ../scss/style_logs.scss */
|
141
|
+
h1 {
|
142
|
+
font-size: 1.17em;
|
143
|
+
}
|
144
|
+
|
145
|
+
/* line 127, ../scss/style_logs.scss */
|
146
|
+
h2 {
|
147
|
+
font-size: 0.7em;
|
148
|
+
}
|
149
|
+
|
150
|
+
/* line 128, ../scss/style_logs.scss */
|
151
|
+
h3 {
|
152
|
+
font-size: 0.3em;
|
153
|
+
padding-left: 3.17em;
|
154
|
+
}
|
155
|
+
|
156
|
+
/* line 129, ../scss/style_logs.scss */
|
157
|
+
section {
|
158
|
+
margin-top: 5%;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
@media all and (max-width: 300px) {
|
162
|
+
/* line 133, ../scss/style_logs.scss */
|
163
|
+
section {
|
164
|
+
margin-top: 8%;
|
165
|
+
}
|
166
|
+
}
|