Compare commits

...

4 Commits

Author SHA1 Message Date
Yang Zhao bfd06ce058 文档路径和APP路径 2017-01-19 14:12:03 +00:00
ccccx 09fea2afc9 no sqlite3 2017-01-03 03:43:58 +00:00
ccx1024cc 3a45eda5bf 添加部署文件gemfile.lock等等 2017-01-03 10:51:58 +08:00
ccx1024cc ef6d8fda9b 添加metrics 2017-01-03 10:33:36 +08:00
201 changed files with 183385 additions and 64 deletions

16
.gitignore vendored
View File

@ -5,21 +5,21 @@
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
# /.bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
# /db/*.sqlite3
# /db/*.sqlite3-journal
# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp
*.swp
# /log/*
# !/log/.keep
# /tmp
# *.swp
# Ignore IDEA files
.idea/*
# Ignore the files you install in your computer
Gemfile.lock
# Gemfile.lock

114
.metrics Normal file
View File

@ -0,0 +1,114 @@
# by default, your directory base name
# MetricFu.report_name = 'Something Convenient'
# cane
# Fails your build if code quality thresholds are not met
# dirs_to_cane: MetricFu::Io::FileSystem.directory("code_dirs"),
# options:
# abc_max: 15,
# line_length: 80,
# no_doc: "n",
# no_readme: "n",
# filetypes: ["rb"]
MetricFu.configuration.configure_metric(:cane) do |cane|
cane.enabled = false
end
# churn
# Identifies the file changes too frequently
# options :
# minimum_churn_count
# ignore_files
# start_date
# data_directory
# history
# report
# name
MetricFu.configuration.configure_metric(:churn) do |churn|
churn.enabled = true
churn.start_date = '6 months ago'
end
# flog
# measuring code complexity
# options :
# dirs_to_flog
# continue
# all
# quiet
MetricFu.configuration.configure_metric(:flog) do |flog|
flog.enabled = false
flog.dirs_to_flog = ['app']
end
# flay
# Flay analyzes code for structural similarities. Differences in literal
# values, variable, class, method names, whitespace, programming style,
# braces vs do/end, etc are all ignored. Making this totally rad.
MetricFu.configuration.configure_metric(:flay) do |flay|
flay.enabled = true
flay.dirs_to_flay = ['app', 'script']
# MetricFu has been setting the minimum score as 100 for
# a long time. This is a really big number, considering
# the default is 16. Setting it to nil to use the Flay default.
minimum_score = nil
end
# reek
# find code smell
MetricFu.configuration.configure_metric(:reek) do |reek|
reek.enabled = true
reek.dirs_to_reek = ['app']
dirs_to_reek = nil
end
# roodi
# find a large number of general issues, design issue
# options
# dirs_to_roodi
# roodi_config
MetricFu.configuration.configure_metric(:roodi) do |roodi|
roodi.enabled = true
roodi.dirs_to_roodi = ['app']
end
# SAIKURO
# Saikuro is a Ruby cyclomatic complexity analyzer
# optins :
# cyclo: "",
# filter_cyclo: "0",
# warn_cyclo: "5",
# error_cyclo: "7",
# formater: "text",
MetricFu.configuration.configure_metric(:saikuro) do |saikuro|
saikuro.enabled = true
saikuro.output_directory = 'tmp/metric_fu/scratch/saikuro'
saikuro.input_directory = ['app']
end
# code statics
# options
# additional_test_directories
# additional_app_directories
MetricFu.configuration.configure_metric(:stats) do |stats|
stats.enabled = true
end
# rails best practices
MetricFu::Configuration.run do |config|
config.configure_metric(:rails_best_practices) do |rbp|
# rbp.silent = true
# rbp.exclude = ["config/chef"]
end
end
# simplecover
# calculate coverage
MetricFu::Configuration.run do |config|
config.configure_metric(:rcov) do |rcov|
rcov.coverage_file = MetricFu.run_path.join("coverage/rcov/rcov.txt")
rcov.rcov_opts = ["--profile", "--rails", "--exclude /gems/,/Library/,spec"]
rcov.enable
rcov.activate
end
end

17
Gemfile
View File

@ -2,8 +2,6 @@ source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
@ -32,6 +30,10 @@ gem 'bcrypt', '~> 3.1.7'
# gem 'capistrano-rails', group: :development
group :development, :test do
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
@ -39,9 +41,15 @@ group :development, :test do
gem 'rspec-rails', '~> 3.5.2'
#把 Rails 生成测试数据默认使用的固件换成更好用的预构件
gem 'factory_girl_rails','~> 4.7.0'
# 安装分析工具metrics
gem 'simplecov'
gem 'simplecov-rcov-text'
gem 'metric_fu'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
@ -61,3 +69,8 @@ group :test do
#结合 Capybara 测试基于 JavaScript 的交互操作
gem 'selenium-webdriver'
end
group :production do
gem 'pg' # for Heroku deployment
gem 'rails_12factor'
end

350
Gemfile.lock Normal file
View File

@ -0,0 +1,350 @@
GEM
remote: https://rubygems.org/
specs:
abstract_type (0.0.7)
actionmailer (4.2.5)
actionpack (= 4.2.5)
actionview (= 4.2.5)
activejob (= 4.2.5)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.5)
actionview (= 4.2.5)
activesupport (= 4.2.5)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.5)
activesupport (= 4.2.5)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
activejob (4.2.5)
activesupport (= 4.2.5)
globalid (>= 0.3.0)
activemodel (4.2.5)
activesupport (= 4.2.5)
builder (~> 3.1)
activerecord (4.2.5)
activemodel (= 4.2.5)
activesupport (= 4.2.5)
arel (~> 6.0)
activesupport (4.2.5)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
adamantium (0.2.0)
ice_nine (~> 0.11.0)
memoizable (~> 0.4.0)
addressable (2.5.0)
public_suffix (~> 2.0, >= 2.0.2)
arel (6.0.4)
arrayfields (4.9.2)
ast (2.3.0)
bcrypt (3.1.11)
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
builder (3.2.2)
byebug (9.0.6)
cane (2.6.2)
parallel
capybara (2.11.0)
addressable
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
childprocess (0.5.9)
ffi (~> 1.0, >= 1.0.11)
chronic (0.10.2)
churn (0.0.35)
chronic (>= 0.2.3)
hirb
json_pure
main
rest-client (>= 1.6.0)
ruby_parser (~> 3.0)
sexp_processor (~> 4.1)
code_analyzer (0.4.7)
sexp_processor
code_metrics (0.1.3)
coderay (1.1.1)
coffee-rails (4.1.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.1.x)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.0.4)
database_cleaner (1.5.3)
debug_inspector (0.0.2)
diff-lcs (1.2.5)
docile (1.1.5)
domain_name (0.5.20161129)
unf (>= 0.0.5, < 1.0.0)
equalizer (0.0.11)
erubis (2.7.0)
execjs (2.7.0)
factory_girl (4.7.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.7.0)
factory_girl (~> 4.7.0)
railties (>= 3.0.0)
faker (1.7.1)
i18n (~> 0.5)
fattr (2.3.0)
ffi (1.9.14)
flay (2.8.1)
erubis (~> 2.7.0)
path_expander (~> 1.0)
ruby_parser (~> 3.0)
sexp_processor (~> 4.0)
flog (4.4.0)
path_expander (~> 1.0)
ruby_parser (~> 3.1, > 3.1.0)
sexp_processor (~> 4.4)
globalid (0.3.7)
activesupport (>= 4.1.0)
hirb (0.7.3)
http-cookie (1.0.3)
domain_name (~> 0.5)
i18n (0.7.0)
ice_nine (0.11.2)
jbuilder (2.6.1)
activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2)
jquery-rails (4.2.2)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (1.8.3)
json_pure (2.0.2)
launchy (2.4.3)
addressable (~> 2.3)
libv8 (3.16.14.17)
loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.4)
mime-types (>= 1.16, < 4)
main (6.2.1)
arrayfields (~> 4.7, >= 4.7.4)
chronic (~> 0.6, >= 0.6.2)
fattr (~> 2.2, >= 2.2.0)
map (~> 6.1, >= 6.1.0)
map (6.6.0)
memoizable (0.4.2)
thread_safe (~> 0.3, >= 0.3.1)
metric_fu (4.12.0)
cane (~> 2.5, >= 2.5.2)
churn (~> 0.0.35)
code_metrics (~> 0.1)
coderay
flay (~> 2.1, >= 2.0.1)
flog (~> 4.1, >= 4.1.1)
launchy (~> 2.0)
metric_fu-Saikuro (~> 1.1, >= 1.1.3)
multi_json
rails_best_practices (~> 1.14, >= 1.14.3)
redcard
reek (>= 1.3.4, < 3.0)
roodi (~> 3.1)
metric_fu-Saikuro (1.1.3)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.10.1)
multi_json (1.12.1)
netrc (0.11.0)
nokogiri (1.7.0)
mini_portile2 (~> 2.1.0)
parallel (1.10.0)
parser (2.3.3.1)
ast (~> 2.2)
path_expander (1.0.1)
pg (0.19.0)
procto (0.0.3)
public_suffix (2.0.5)
rack (1.6.5)
rack-test (0.6.3)
rack (>= 1.0)
rails (4.2.5)
actionmailer (= 4.2.5)
actionpack (= 4.2.5)
actionview (= 4.2.5)
activejob (= 4.2.5)
activemodel (= 4.2.5)
activerecord (= 4.2.5)
activesupport (= 4.2.5)
bundler (>= 1.3.0, < 2.0)
railties (= 4.2.5)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.8)
activesupport (>= 4.2.0.beta, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
rails_12factor (0.0.3)
rails_serve_static_assets
rails_stdout_logging
rails_best_practices (1.17.0)
activesupport
code_analyzer (>= 0.4.3)
erubis
i18n
json
require_all
ruby-progressbar
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
railties (4.2.5)
actionpack (= 4.2.5)
activesupport (= 4.2.5)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (2.2.1)
rake (12.0.0)
rdoc (4.3.0)
redcard (1.1.0)
reek (2.2.1)
parser (~> 2.2)
rainbow (~> 2.0)
unparser (~> 0.2.2)
ref (2.0.0)
require_all (1.3.3)
rest-client (2.0.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
roodi (3.3.1)
ruby_parser (~> 3.2, >= 3.2.2)
rspec-core (3.5.4)
rspec-support (~> 3.5.0)
rspec-expectations (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-mocks (3.5.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.5.0)
rspec-rails (3.5.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.5.0)
rspec-expectations (~> 3.5.0)
rspec-mocks (~> 3.5.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
ruby-progressbar (1.8.1)
ruby_parser (3.8.3)
sexp_processor (~> 4.1)
rubyzip (1.2.0)
sass (3.4.23)
sass-rails (5.0.6)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
sdoc (0.4.2)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
selenium-webdriver (3.0.5)
childprocess (~> 0.5)
rubyzip (~> 1.0)
websocket (~> 1.0)
sexp_processor (4.7.0)
simplecov (0.12.0)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.0)
simplecov-rcov-text (0.0.3)
spring (2.0.0)
activesupport (>= 4.2)
sprockets (3.7.1)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.0)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.12)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
thor (0.19.4)
thread_safe (0.3.5)
tilt (2.0.5)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (3.0.4)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unparser (0.2.5)
abstract_type (~> 0.0.7)
adamantium (~> 0.2.0)
concord (~> 0.1.5)
diff-lcs (~> 1.2.5)
equalizer (~> 0.0.9)
parser (~> 2.3.0)
procto (~> 0.0.2)
web-console (2.3.0)
activemodel (>= 4.0)
binding_of_caller (>= 0.7.2)
railties (>= 4.0)
sprockets-rails (>= 2.0, < 4.0)
websocket (1.2.3)
xpath (2.0.0)
nokogiri (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
bcrypt (~> 3.1.7)
byebug
capybara
coffee-rails (~> 4.1.0)
database_cleaner
factory_girl_rails (~> 4.7.0)
faker
jbuilder (~> 2.0)
jquery-rails
launchy
metric_fu
pg
rails (= 4.2.5)
rails_12factor
rspec-rails (~> 3.5.2)
sass-rails (~> 5.0)
sdoc (~> 0.4.0)
selenium-webdriver
simplecov
simplecov-rcov-text
spring
sqlite3
therubyracer
turbolinks
uglifier (>= 1.3.0)
web-console (~> 2.0)
BUNDLED WITH
1.13.6

View File

@ -1,28 +1,4 @@
== README
This README would normally document whatever steps are necessary to get the
application up and running.
Things you may want to cover:
* Ruby version
* System dependencies
* Configuration
* Database creation
* Database initialization
* How to run the test suite
* Services (job queues, cache servers, search engines, etc.)
* Deployment instructions
* ...
Please feel free to use a different markup language if you do not plan to run
<tt>rake doc:app</tt>.
APP-URL:https://ambition-ucas.herokuapp.com/pages/login.html
用户名lucio.yang@qq.com
密码123123123
报告路径reports/metric_fu/output/index.html

5
coverage/.last_run.json Normal file
View File

@ -0,0 +1,5 @@
{
"result": {
"covered_percent": 87.05
}
}

1697
coverage/.resultset.json Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,799 @@
/* -----------------------------------------------------------------------
Blueprint CSS Framework 0.9
http://blueprintcss.org
* Copyright (c) 2007-Present. See LICENSE for more info.
* See README for instructions on how to use Blueprint.
* For credits and origins, see AUTHORS.
* This is a compressed file. See the sources in the 'src' directory.
----------------------------------------------------------------------- */
/* reset.css */
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;}
body {line-height:1.5;}
table {border-collapse:separate;border-spacing:0;}
caption, th, td {text-align:left;font-weight:normal;}
table, td, th {vertical-align:middle;}
blockquote:before, blockquote:after, q:before, q:after {content:"";}
blockquote, q {quotes:"" "";}
a img {border:none;}
/* typography.css */
html {font-size:100.01%;}
body {font-size:82%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
h2 {font-size:2em;margin-bottom:0.75em;}
h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
h6 {font-size:1em;font-weight:bold;}
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
p {margin:0 0 1.5em;}
p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
a:focus, a:hover {color:#000;}
a {color:#009;text-decoration:underline;}
blockquote {margin:1.5em;color:#666;font-style:italic;}
strong {font-weight:bold;}
em, dfn {font-style:italic;}
dfn {font-weight:bold;}
sup, sub {line-height:0;}
abbr, acronym {border-bottom:1px dotted #666;}
address {margin:0 0 1.5em;font-style:italic;}
del {color:#666;}
pre {margin:1.5em 0;white-space:pre;}
pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
li ul, li ol {margin:0;}
ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
ul {list-style-type:disc;}
ol {list-style-type:decimal;}
dl {margin:0 0 1.5em 0;}
dl dt {font-weight:bold;}
dd {margin-left:1.5em;}
table {margin-bottom:1.4em;width:100%;}
th {font-weight:bold;}
thead th {background:#c3d9ff;}
th, td, caption {padding:4px 10px 4px 5px;}
tr.even td {background:#efefef;}
tfoot {font-style:italic;}
caption {background:#eee;}
.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
.hide {display:none;}
.quiet {color:#666;}
.loud {color:#000;}
.highlight {background:#ff0;}
.added {background:#060;color:#fff;}
.removed {background:#900;color:#fff;}
.first {margin-left:0;padding-left:0;}
.last {margin-right:0;padding-right:0;}
.top {margin-top:0;padding-top:0;}
.bottom {margin-bottom:0;padding-bottom:0;}
/* forms.css */
label {font-weight:bold;}
fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
legend {font-weight:bold;font-size:1.2em;}
input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
input.text, input.title {width:300px;padding:5px;}
input.title {font-size:1.5em;}
textarea {width:390px;height:250px;padding:5px;}
input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
form.inline {line-height:3;}
form.inline p {margin-bottom:0;}
.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
.error a {color:#8a1f11;}
.notice a {color:#514721;}
.success a {color:#264409;}
.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
hr.space {background:#fff;color:#fff;visibility:hidden;}
.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
.clearfix, .container {display:block;}
.clear {clear:both;}
/*
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
*/
pre code {
}
pre .comment,
pre .template_comment,
pre .diff .header,
pre .javadoc {
color: #998;
font-style: italic
}
pre .keyword,
pre .css .rule .keyword,
pre .winutils,
pre .javascript .title,
pre .lisp .title {
color: #000;
font-weight: bold
}
pre .number,
pre .hexcolor {
color: #458
}
pre .string,
pre .tag .value,
pre .phpdoc,
pre .tex .formula {
color: #d14
}
pre .subst {
color: #712;
}
pre .constant,
pre .title,
pre .id {
color: #900;
font-weight: bold
}
pre .javascript .title,
pre .lisp .title,
pre .subst {
font-weight: normal
}
pre .class .title,
pre .haskell .label,
pre .tex .command {
color: #458;
font-weight: bold
}
pre .tag,
pre .tag .title,
pre .rules .property,
pre .django .tag .keyword {
color: #000080;
font-weight: normal
}
pre .attribute,
pre .variable,
pre .instancevar,
pre .lisp .body {
color: #008080
}
pre .regexp {
color: #009926
}
pre .class {
color: #458;
font-weight: bold
}
pre .symbol,
pre .ruby .symbol .string,
pre .ruby .symbol .keyword,
pre .ruby .symbol .keymethods,
pre .lisp .keyword,
pre .tex .special,
pre .input_number {
color: #990073
}
pre .builtin,
pre .built_in,
pre .lisp .title {
color: #0086b3
}
pre .preprocessor,
pre .pi,
pre .doctype,
pre .shebang,
pre .cdata {
color: #999;
font-weight: bold
}
pre .deletion {
background: #fdd
}
pre .addition {
background: #dfd
}
pre .diff .change {
background: #0086b3
}
pre .chunk {
color: #aaa
}
pre .tex .formula {
opacity: 0.5;
}
/*
* jQuery UI CSS Framework @VERSION
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework @VERSION
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
/*
ColorBox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
#cboxLoadedContent{overflow:auto;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
.cboxIframe{width:100%; height:100%; display:block; border:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
/*
User Style:
Change the following styles to modify the appearance of ColorBox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay{background:#000;}
#colorbox{}
#cboxTopLeft{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat 0 0;}
#cboxTopCenter{height:14px; background:url(colorbox/border.png) repeat-x top left;}
#cboxTopRight{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat -36px 0;}
#cboxBottomLeft{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat 0 -32px;}
#cboxBottomCenter{height:43px; background:url(colorbox/border.png) repeat-x bottom left;}
#cboxBottomRight{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat -36px -32px;}
#cboxMiddleLeft{width:14px; background:url(colorbox/controls.png) repeat-y -175px 0;}
#cboxMiddleRight{width:14px; background:url(colorbox/controls.png) repeat-y -211px 0;}
#cboxContent{background:#fff; overflow:visible;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{margin-bottom:5px;}
#cboxLoadingOverlay{background:url(colorbox/loading_background.png) no-repeat center center;}
#cboxLoadingGraphic{background:url(colorbox/loading.gif) no-repeat center center;}
#cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
#cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(colorbox/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
#cboxPrevious{left:0px; background-position: -51px -25px;}
#cboxPrevious:hover{background-position:-51px 0px;}
#cboxNext{left:27px; background-position:-75px -25px;}
#cboxNext:hover{background-position:-75px 0px;}
#cboxClose{right:0; background-position:-100px -25px;}
#cboxClose:hover{background-position:-100px 0px;}
.cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
.cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
.cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
.cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
#loading {
position: fixed;
left: 40%;
top: 50%; }
a {
color: #333333;
text-decoration: none; }
a:hover {
color: black;
text-decoration: underline; }
body {
font-family: "Lucida Grande", Helvetica, "Helvetica Neue", Arial, sans-serif;
padding: 12px;
background-color: #333333; }
h1, h2, h3, h4 {
color: #1c2324;
margin: 0;
padding: 0;
margin-bottom: 12px; }
table {
width: 100%; }
#content {
clear: left;
background-color: white;
border: 2px solid #dddddd;
border-top: 8px solid #dddddd;
padding: 18px;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-topright: 5px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
border-top-right-radius: 5px; }
.dataTables_filter, .dataTables_info {
padding: 2px 6px; }
abbr.timeago {
text-decoration: none;
border: none;
font-weight: bold; }
.timestamp {
float: right;
color: #dddddd; }
.group_tabs {
list-style: none;
float: left;
margin: 0;
padding: 0; }
.group_tabs li {
display: inline;
float: left; }
.group_tabs li a {
font-family: Helvetica, Arial, sans-serif;
display: block;
float: left;
text-decoration: none;
padding: 4px 8px;
background-color: #aaaaaa;
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dddddd), to(#aaaaaa));
background: -moz-linear-gradient(#dddddd, #aaaaaa);
background: linear-gradient(#dddddd, #aaaaaa);
text-shadow: #e5e5e5 1px 1px 0px;
border-bottom: none;
color: #333333;
font-weight: bold;
margin-right: 8px;
border-top: 1px solid #efefef;
-webkit-border-top-left-radius: 2px;
-webkit-border-top-right-radius: 2px;
-moz-border-radius-topleft: 2px;
-moz-border-radius-topright: 2px;
border-top-left-radius: 2px;
border-top-right-radius: 2px; }
.group_tabs li a:hover {
background-color: #cccccc;
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#eeeeee), to(#aaaaaa));
background: -moz-linear-gradient(#eeeeee, #aaaaaa);
background: linear-gradient(#eeeeee, #aaaaaa); }
.group_tabs li a:active {
padding-top: 5px;
padding-bottom: 3px; }
.group_tabs li.active a {
color: black;
text-shadow: white 1px 1px 0px;
background-color: #dddddd;
background: -webkit-gradient(linear, 0 0, 0 bottom, from(white), to(#dddddd));
background: -moz-linear-gradient(white, #dddddd);
background: linear-gradient(white, #dddddd); }
.file_list {
margin-bottom: 18px; }
a.src_link {
background: url("./magnify.png") no-repeat left 50%;
padding-left: 18px; }
tr, td {
margin: 0;
padding: 0; }
th {
white-space: nowrap; }
th.ui-state-default {
cursor: pointer; }
th span.ui-icon {
float: left; }
td {
padding: 4px 8px; }
td.strong {
font-weight: bold; }
.source_table h3, .source_table h4 {
padding: 0;
margin: 0;
margin-bottom: 4px; }
.source_table .header {
padding: 10px; }
.source_table pre {
margin: 0;
padding: 0;
white-space: normal;
color: black;
font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
.source_table code {
color: black;
font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
.source_table pre {
background-color: #333333; }
.source_table pre ol {
margin: 0px;
padding: 0px;
margin-left: 45px;
font-size: 12px;
color: white; }
.source_table pre li {
margin: 0px;
padding: 2px 6px;
border-left: 5px solid white; }
.source_table pre li code {
white-space: pre;
white-space: pre-wrap; }
.source_table pre .hits {
float: right;
margin-left: 10px;
padding: 2px 4px;
background-color: #444444;
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#222222), to(#666666));
background: -moz-linear-gradient(#222222, #666666);
background: linear-gradient(#222222, #666666);
color: white;
font-family: Helvetica, "Helvetica Neue", Arial, sans-serif;
font-size: 10px;
font-weight: bold;
text-align: center;
border-radius: 6px; }
#footer {
color: #dddddd;
font-size: 12px;
font-weight: bold;
margin-top: 12px;
text-align: right; }
#footer a {
color: #eeeeee;
text-decoration: underline; }
#footer a:hover {
color: white;
text-decoration: none; }
.green {
color: #009900; }
.red {
color: #990000; }
.yellow {
color: #ddaa00; }
.source_table .covered {
border-color: #009900; }
.source_table .missed {
border-color: #990000; }
.source_table .never {
border-color: black; }
.source_table .skipped {
border-color: #ffcc00; }
.source_table .covered:nth-child(odd) {
background-color: #cdf2cd; }
.source_table .covered:nth-child(even) {
background-color: #dbf2db; }
.source_table .missed:nth-child(odd) {
background-color: #f7c0c0; }
.source_table .missed:nth-child(even) {
background-color: #f7cfcf; }
.source_table .never:nth-child(odd) {
background-color: #efefef; }
.source_table .never:nth-child(even) {
background-color: #f4f4f4; }
.source_table .skipped:nth-child(odd) {
background-color: #fbf0c0; }
.source_table .skipped:nth-child(even) {
background-color: #fbffcf; }

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

10628
coverage/index.html Normal file

File diff suppressed because it is too large Load Diff

1743
coverage/rcov/rcov.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
db/development.sqlite3 Normal file

Binary file not shown.

View File

@ -44,8 +44,8 @@ ActiveRecord::Schema.define(version: 20161229084919) do
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "category"
t.integer "project_id"
t.integer "category"
end
add_index "notes", ["user_id"], name: "index_notes_on_user_id"

BIN
db/test.sqlite3 Normal file

Binary file not shown.

1292
log/development.log Normal file

File diff suppressed because it is too large Load Diff

19395
log/test.log Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,63 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">module</span> <span class="class">ApplicationHelper</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,744 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Comment</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:mission</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:comment_has_atleast_one_character</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_id_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">def</span> <span class="function">comment_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">'</span><span class="content">content should has at least one character</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">def</span> <span class="function">user_id_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="comment"># mission controller</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="comment"># def mission_id_should_be_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment"># @mission = Mission.find(:mission_id)</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment"># if @mission == nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="comment"># errors[:mission_id] = &quot;mission is not exist&quot;</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="comment"># end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="comment"># end </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,787 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Mission</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> has_many <span class="symbol">:comments</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:deadline</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:priority</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validates <span class="symbol">:status</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> validate <span class="symbol">:priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> validate <span class="symbol">:status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> validate <span class="symbol">:project_exists</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">def</span> <span class="function">priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">if</span> priority != <span class="integer">1</span> <span class="keyword">and</span> priority != <span class="integer">2</span> <span class="keyword">and</span> priority != <span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> errors[<span class="symbol">:priority</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">priority is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="keyword">def</span> <span class="function">status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> status != <span class="integer">1</span> <span class="keyword">and</span> status != <span class="integer">2</span> <span class="keyword">and</span> status != <span class="integer">3</span> <span class="keyword">and</span> status != <span class="integer">4</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:status</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">status is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment">#puts project_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment">#puts project.inspect</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> errors[<span class="symbol">:project_id</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project_id is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,910 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SharesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="symbol">:create</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="symbol">:getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> uid = session[<span class="symbol">:user_id</span>].to_i
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> share=<span class="constant">Share</span>.new(share_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> share.user_id=uid
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">if</span> share.save
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> content = <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;a&gt;</span><span class="delimiter">&quot;</span></span>+<span class="constant">User</span>.find(uid).name + <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;/a&gt; </span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> pid=share.project_id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="constant">Projects_user</span>.where(<span class="symbol">:project_id</span> =&gt; pid).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> params_note = {<span class="key">user_id</span>: i.user_id,<span class="key">content</span>: content,<span class="key">category</span>: <span class="integer">1</span>,<span class="key">project_id</span>: pid}
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> note = <span class="constant">Note</span>.new(params_note)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> note.save!
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:created</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> render <span class="key">json</span>: project.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">def</span> <span class="function">getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="constant">Share</span>.where(<span class="symbol">:project_id</span> =&gt; pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> puts i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> name = <span class="constant">User</span>.find(i.user_id).name
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="symbol">:name</span> =&gt; name,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="symbol">:time</span> =&gt; i.created_at,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="symbol">:content</span> =&gt; i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n51" name="n51">51</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n52" name="n52">52</a></span> <span class="keyword">def</span> <span class="function">share_params</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n53" name="n53">53</a></span> params.require(<span class="symbol">:share</span>).permit(<span class="symbol">:project_id</span>,<span class="symbol">:content</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n54" name="n54">54</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n55" name="n55">55</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,67 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
<ul>
<li>remove empty helpers &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">module</span> <span class="class">SessionsHelper</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,917 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">UsersController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>, <span class="key">except</span>: [ <span class="symbol">:emailExist</span>, <span class="symbol">:usernameExist</span>, <span class="symbol">:create</span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="symbol">:emailExist</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="symbol">:usernameExist</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="symbol">:create</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="symbol">:update</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>Method name "emailExist" should match pattern /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ &raquo; roodi</li>
<li>UncommunicativeMethodName - has the name 'emailExist' &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">emailExist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="keyword">if</span> checkExist?(<span class="symbol">:email</span>, params[<span class="symbol">:email</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>Method name "usernameExist" should match pattern /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ &raquo; roodi</li>
<li>UncommunicativeMethodName - has the name 'usernameExist' &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">def</span> <span class="function">usernameExist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">if</span> checkExist?(<span class="symbol">:name</span>, params[<span class="symbol">:username</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">exist</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">not exist</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="instance-variable">@user</span> = <span class="constant">User</span>.new(user_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="keyword">if</span> <span class="instance-variable">@user</span>.save
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> render <span class="key">status</span>: <span class="symbol">:created</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> render <span class="key">json</span>: <span class="instance-variable">@user</span>.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">def</span> <span class="function">update</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="instance-variable">@user</span> = current_user
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> <span class="keyword">if</span> <span class="instance-variable">@user</span>.update(user_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> render <span class="string"><span class="delimiter">'</span><span class="content">show</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> render <span class="key">json</span>:current_user.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 1 &raquo; saikuro</li>
<li>Method name "checkExist?" should match pattern /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ &raquo; roodi</li>
<li>UtilityFunction - doesn't depend on instance state &raquo; reek</li>
<li>UncommunicativeMethodName - has the name 'checkExist?' &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="keyword">def</span> <span class="function">checkExist?</span>(field_name, value)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span> <span class="constant">User</span>.exists?(field_name =&gt; value)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 1 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span> <span class="keyword">def</span> <span class="function">user_params</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n51" name="n51">51</a></span> params.require(<span class="symbol">:user</span>).permit(<span class="symbol">:name</span>,<span class="symbol">:password</span>, <span class="symbol">:password_confirmation</span>, <span class="symbol">:email</span>, <span class="symbol">:phone</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n52" name="n52">52</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n53" name="n53">53</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,938 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SharesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="symbol">:create</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="symbol">:getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 3 &raquo; saikuro</li>
<li>TooManyStatements - has approx 11 statements &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'i' &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> uid = session[<span class="symbol">:user_id</span>].to_i
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> share=<span class="constant">Share</span>.new(share_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> share.user_id=uid
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">if</span> share.save
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> content = <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;a&gt;</span><span class="delimiter">&quot;</span></span>+<span class="constant">User</span>.find(uid).name + <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;/a&gt; </span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> pid=share.project_id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="constant">Projects_user</span>.where(<span class="symbol">:project_id</span> =&gt; pid).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> params_note = {<span class="key">user_id</span>: i.user_id,<span class="key">content</span>: content,<span class="key">category</span>: <span class="integer">1</span>,<span class="key">project_id</span>: pid}
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> note = <span class="constant">Note</span>.new(params_note)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> note.save!
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:created</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> render <span class="key">json</span>: project.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>Method name "getShareList" should match pattern /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ &raquo; roodi</li>
<li>DuplicateMethodCall - calls i.content 2 times &raquo; reek</li>
<li>TooManyStatements - has approx 7 statements &raquo; reek</li>
<li>UncommunicativeMethodName - has the name 'getShareList' &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'i' &raquo; reek</li>
<li>FeatureEnvy - refers to i more than self &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">def</span> <span class="function">getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="constant">Share</span>.where(<span class="symbol">:project_id</span> =&gt; pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> puts i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> name = <span class="constant">User</span>.find(i.user_id).name
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="symbol">:name</span> =&gt; name,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="symbol">:time</span> =&gt; i.created_at,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="symbol">:content</span> =&gt; i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n51" name="n51">51</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 1 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n52" name="n52">52</a></span> <span class="keyword">def</span> <span class="function">share_params</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n53" name="n53">53</a></span> params.require(<span class="symbol">:share</span>).permit(<span class="symbol">:project_id</span>,<span class="symbol">:content</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n54" name="n54">54</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n55" name="n55">55</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,495 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SessionsController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> before_action <span class="symbol">:authenticate</span>, <span class="key">except</span>: [ <span class="symbol">:create</span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [<span class="symbol">:create</span>,<span class="symbol">:destroy</span>,<span class="symbol">:show</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> user = <span class="constant">User</span>.find_by(<span class="key">email</span>: params[<span class="symbol">:email</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="keyword">if</span> user &amp;&amp; user.authenticate(params[<span class="symbol">:password</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> session[<span class="symbol">:user_id</span>] = user.id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">ok</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> render <span class="key">status</span>: <span class="symbol">:unauthorized</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">account or password is not correct</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">destroy</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> session.delete <span class="symbol">:user_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="instance-variable">@current_user</span> &amp;&amp;= <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">def</span> <span class="function">show</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> render <span class="string"><span class="delimiter">'</span><span class="content">show</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,275 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Project</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> has_and_belongs_to_many <span class="symbol">:users</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validate <span class="symbol">:require_at_least_on_user</span>,<span class="key">on</span>: <span class="symbol">:update</span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">length</span>: { <span class="key">minimum</span>: <span class="integer">1</span>, <span class="key">maximum</span>: <span class="integer">50</span> }, <span class="key">uniqueness</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">require_at_least_on_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">if</span> !users || users.size == <span class="integer">0</span> <span class="comment"># size</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> errors[<span class="symbol">:users</span>] = <span class="string"><span class="delimiter">'</span><span class="content">at least one user in the project</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,627 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span>require <span class="constant">File</span>.expand_path(<span class="string"><span class="delimiter">'</span><span class="content">../boot</span><span class="delimiter">'</span></span>, <span class="predefined-constant">__FILE__</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span>require <span class="string"><span class="delimiter">'</span><span class="content">rails/all</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span><span class="comment"># Require the gems listed in Gemfile, including any gems</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span><span class="comment"># you've limited to :test, :development, or :production.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span><span class="constant">Bundler</span>.require(*<span class="constant">Rails</span>.groups)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span><span class="keyword">module</span> <span class="class">Workspace</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">class</span> <span class="class">Application</span> &lt; <span class="constant">Rails</span>::<span class="constant">Application</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="comment"># Settings in config/environments/* take precedence over those specified here.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="comment"># Application configuration should go into files in config/initializers</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="comment"># -- all .rb files in that directory are automatically loaded.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="comment"># The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> <span class="comment"># config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="comment"># config.i18n.default_locale = :de</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="comment"># Do not swallow errors in after_commit/after_rollback callbacks.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> config.active_record.raise_in_transactional_callbacks = <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> config.time_zone = <span class="string"><span class="delimiter">'</span><span class="content">Beijing</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> config.active_record.default_timezone = <span class="symbol">:local</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> config.generators <span class="keyword">do</span> |g|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> g.test_framework <span class="symbol">:rspec</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="key">fixtures</span>: <span class="predefined-constant">true</span>, <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="key">view_specs</span>: <span class="predefined-constant">false</span>, <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="key">helper_specs</span>: <span class="predefined-constant">false</span>, <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="key">routing_specs</span>: <span class="predefined-constant">false</span>, <span class="comment"># config/routes.rb </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="key">controller_specs</span>: <span class="predefined-constant">true</span>, <span class="comment">#controller</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="key">request_specs</span>: <span class="predefined-constant">false</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> g.fixture_replacement <span class="symbol">:factory_girl</span>, <span class="key">dir</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">spec/factories</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,271 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">User</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> has_and_belongs_to_many <span class="symbol">:projects</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> has_and_belongs_to_many <span class="symbol">:missions</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> has_many <span class="symbol">:notes</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> has_secure_password <span class="comment"># password_confirmpasswordpassword</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">length</span>: { <span class="key">maximum</span>: <span class="integer">30</span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validates <span class="symbol">:email</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">uniqueness</span>: <span class="predefined-constant">true</span>, <span class="key">length</span>: { <span class="key">maximum</span>: <span class="integer">50</span>},
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="key">format</span>: { <span class="key">with</span>: <span class="regexp"><span class="delimiter">/</span><span class="char">\A</span><span class="content">([^@</span><span class="char">\s</span><span class="content">]+)@((?:[-a-z0-9]+</span><span class="char">\.</span><span class="content">)+[a-z]{2,})</span><span class="char">\Z</span><span class="delimiter">/</span><span class="modifier">i</span></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validates <span class="symbol">:password</span>, <span class="key">length</span>: { <span class="key">minimum</span>: <span class="integer">6</span> },<span class="key">on</span>:create
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> validates <span class="symbol">:phone</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">format</span>: { <span class="key">with</span>: <span class="regexp"><span class="delimiter">/</span><span class="char">\A</span><span class="content">[0-9]{11,11}</span><span class="char">\Z</span><span class="delimiter">/</span><span class="modifier">i</span></span> },
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="key">multiline</span>: <span class="predefined-constant">false</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,648 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">NotesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 4 &raquo; saikuro</li>
<li>Method "getNotesList" has 24 lines. It should have 20 or less. &raquo; roodi</li>
<li>Method name "getNotesList" should match pattern /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ &raquo; roodi</li>
<li>DuplicateMethodCall - calls n.created_at 2 times &raquo; reek</li>
<li>DuplicateMethodCall - calls n.created_at.to_s 2 times &raquo; reek</li>
<li>TooManyStatements - has approx 13 statements &raquo; reek</li>
<li>UncommunicativeMethodName - has the name 'getNotesList' &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'h' &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'k' &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'n' &raquo; reek</li>
<li>UncommunicativeVariableName - has the variable name 'v' &raquo; reek</li>
<li>FeatureEnvy - refers to n more than self &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="keyword">def</span> <span class="function">getNotesList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> uid = session[<span class="symbol">:user_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> notes = <span class="constant">Note</span>.where(<span class="string"><span class="delimiter">&quot;</span><span class="content">user_id = ? AND project_id = ? </span><span class="delimiter">&quot;</span></span>,uid,pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).all
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> note = <span class="constant">Hash</span>.new <span class="keyword">do</span> |h,k|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> h[k] = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> notes.each <span class="keyword">do</span> |n|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> date = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">([</span><span class="char">\d</span><span class="char">\-</span><span class="content">]*)</span><span class="char">\s</span><span class="content">(.*)</span><span class="delimiter">/</span></span>,<span class="integer">1</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> time = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">(.*)</span><span class="char">\s</span><span class="content">([</span><span class="char">\d</span><span class="char">\:</span><span class="content">]*)</span><span class="delimiter">/</span></span>,<span class="integer">2</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> note[date] &lt;&lt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="symbol">:content</span> =&gt; n.content,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="symbol">:time</span> =&gt; time,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="symbol">:type</span> =&gt; n.category
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> note.each <span class="keyword">do</span> |k,v|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="symbol">:time</span> =&gt; k,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="symbol">:notes</span> =&gt; v
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,63 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">module</span> <span class="class">SessionsHelper</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,67 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
<ul>
<li>remove empty helpers &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">module</span> <span class="class">UsersHelper</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,834 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Note</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:category</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> validate <span class="symbol">:project_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">def</span> <span class="function">note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">def</span> <span class="function">note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> category != <span class="integer">1</span> <span class="keyword">and</span> category != <span class="integer">2</span> <span class="keyword">and</span> category !=<span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:category</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note category is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Note is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="keyword">def</span> <span class="function">project_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project should be exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,526 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
<ul>
<li>Class name "Missions_user" should match pattern /^[A-Z][a-zA-Z0-9]*$/ &raquo; roodi</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Missions_user</span> &lt;<span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validate <span class="symbol">:mission_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">mission_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> mission = <span class="constant">Mission</span>.find_by(<span class="key">id</span>: mission_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">if</span> mission == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> errors[<span class="symbol">:mission</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">mission belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,297 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">ApplicationController</span> &lt; <span class="constant">ActionController</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> <span class="comment"># Prevent CSRF attacks by raising an exception.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> <span class="comment"># For APIs, you may want to use :null_session instead.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> protect_from_forgery <span class="key">with</span>: <span class="symbol">:exception</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="keyword">def</span> <span class="function">authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> render <span class="key">status</span>: <span class="symbol">:unauthorized</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span> <span class="keyword">unless</span> session[<span class="string"><span class="delimiter">'</span><span class="content">user_id</span><span class="delimiter">'</span></span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>DuplicateMethodCall - calls session[:user_id] 2 times &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">current_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="instance-variable">@current_user</span> ||= <span class="constant">User</span>.find(session[<span class="symbol">:user_id</span>]) <span class="keyword">if</span> session[<span class="symbol">:user_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> helper_method <span class="symbol">:current_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,510 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
<ul>
<li>Class name "Projects_user" should match pattern /^[A-Z][a-zA-Z0-9]*$/ &raquo; roodi</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Projects_user</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validate <span class="symbol">:user_exists</span> , <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validate <span class="symbol">:project_exists</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project belong to projects_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to projects_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,850 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Note</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:category</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> validate <span class="symbol">:project_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">def</span> <span class="function">note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">def</span> <span class="function">note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> category != <span class="integer">1</span> <span class="keyword">and</span> category != <span class="integer">2</span> <span class="keyword">and</span> category !=<span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:category</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note category is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Note is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="keyword">def</span> <span class="function">project_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project should be exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,626 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">NotesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="keyword">def</span> <span class="function">getNotesList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> uid = session[<span class="symbol">:user_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> notes = <span class="constant">Note</span>.where(<span class="string"><span class="delimiter">&quot;</span><span class="content">user_id = ? AND project_id = ? </span><span class="delimiter">&quot;</span></span>,uid,pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).all
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> note = <span class="constant">Hash</span>.new <span class="keyword">do</span> |h,k|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> h[k] = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> notes.each <span class="keyword">do</span> |n|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> date = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">([</span><span class="char">\d</span><span class="char">\-</span><span class="content">]*)</span><span class="char">\s</span><span class="content">(.*)</span><span class="delimiter">/</span></span>,<span class="integer">1</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> time = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">(.*)</span><span class="char">\s</span><span class="content">([</span><span class="char">\d</span><span class="char">\:</span><span class="content">]*)</span><span class="delimiter">/</span></span>,<span class="integer">2</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> note[date] &lt;&lt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="symbol">:content</span> =&gt; n.content,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="symbol">:time</span> =&gt; time,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="symbol">:type</span> =&gt; n.category
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> note.each <span class="keyword">do</span> |k,v|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="symbol">:time</span> =&gt; k,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="symbol">:notes</span> =&gt; v
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,622 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">NotesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="keyword">def</span> <span class="function">getNotesList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> uid = session[<span class="symbol">:user_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> notes = <span class="constant">Note</span>.where(<span class="string"><span class="delimiter">&quot;</span><span class="content">user_id = ? AND project_id = ? </span><span class="delimiter">&quot;</span></span>,uid,pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).all
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> note = <span class="constant">Hash</span>.new <span class="keyword">do</span> |h,k|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> h[k] = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> notes.each <span class="keyword">do</span> |n|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> date = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">([</span><span class="char">\d</span><span class="char">\-</span><span class="content">]*)</span><span class="char">\s</span><span class="content">(.*)</span><span class="delimiter">/</span></span>,<span class="integer">1</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> time = n.created_at.to_s[<span class="regexp"><span class="delimiter">/</span><span class="content">(.*)</span><span class="char">\s</span><span class="content">([</span><span class="char">\d</span><span class="char">\:</span><span class="content">]*)</span><span class="delimiter">/</span></span>,<span class="integer">2</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> note[date] &lt;&lt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="symbol">:content</span> =&gt; n.content,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="symbol">:time</span> =&gt; time,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="symbol">:type</span> =&gt; n.category
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> note.each <span class="keyword">do</span> |k,v|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="symbol">:time</span> =&gt; k,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="symbol">:notes</span> =&gt; v
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,498 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Projects_user</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validate <span class="symbol">:user_exists</span> , <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validate <span class="symbol">:project_exists</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project belong to projects_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to projects_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,797 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Mission</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> has_many <span class="symbol">:comments</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:deadline</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:priority</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validates <span class="symbol">:status</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> validate <span class="symbol">:priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> validate <span class="symbol">:status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> validate <span class="symbol">:project_exists</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">def</span> <span class="function">priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">if</span> priority != <span class="integer">1</span> <span class="keyword">and</span> priority != <span class="integer">2</span> <span class="keyword">and</span> priority != <span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> errors[<span class="symbol">:priority</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">priority is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="keyword">def</span> <span class="function">status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> status != <span class="integer">1</span> <span class="keyword">and</span> status != <span class="integer">2</span> <span class="keyword">and</span> status != <span class="integer">3</span> <span class="keyword">and</span> status != <span class="integer">4</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:status</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">status is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment">#puts project_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment">#puts project.inspect</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> errors[<span class="symbol">:project_id</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project_id is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,639 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Share</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:project_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">def</span> <span class="function">share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">share content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
<li>NilCheck - performs a nil-check &raquo; reek</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,507 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SessionsController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> before_action <span class="symbol">:authenticate</span>, <span class="key">except</span>: [ <span class="symbol">:create</span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [<span class="symbol">:create</span>,<span class="symbol">:destroy</span>,<span class="symbol">:show</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> user = <span class="constant">User</span>.find_by(<span class="key">email</span>: params[<span class="symbol">:email</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="keyword">if</span> user &amp;&amp; user.authenticate(params[<span class="symbol">:password</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> session[<span class="symbol">:user_id</span>] = user.id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">ok</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> render <span class="key">status</span>: <span class="symbol">:unauthorized</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">account or password is not correct</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 1 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">destroy</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> session.delete <span class="symbol">:user_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="instance-variable">@current_user</span> &amp;&amp;= <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 1 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">def</span> <span class="function">show</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> render <span class="string"><span class="delimiter">'</span><span class="content">show</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,830 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Note</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:category</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> validate <span class="symbol">:project_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">def</span> <span class="function">note_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">def</span> <span class="function">note_category_should_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> category != <span class="integer">1</span> <span class="keyword">and</span> category != <span class="integer">2</span> <span class="keyword">and</span> category !=<span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:category</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">note category is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Note is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="keyword">def</span> <span class="function">project_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project should be exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,163 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">ChangeNoteFieldTypeToCategory</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Migration</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> <span class="keyword">def</span> <span class="function">change</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> remove_column <span class="symbol">:notes</span>, <span class="symbol">:type</span>, <span class="symbol">:integer</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> add_column <span class="symbol">:notes</span>, <span class="symbol">:category</span>, <span class="symbol">:integer</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,623 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Share</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:project_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">def</span> <span class="function">share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">share content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,738 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Comment</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:mission</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:comment_has_atleast_one_character</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_id_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">def</span> <span class="function">comment_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">'</span><span class="content">content should has at least one character</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">def</span> <span class="function">user_id_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="comment"># mission controller</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="comment"># def mission_id_should_be_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment"># @mission = Mission.find(:mission_id)</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment"># if @mission == nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="comment"># errors[:mission_id] = &quot;mission is not exist&quot;</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="comment"># end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="comment"># end </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

1
reports/metric_fu/output/bluff-min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,15 @@
createGraphElement("canvas");
var chart = new Bluff.Line("graph", "1000x600");
chart.theme_37signals();
chart.tooltips = true;
chart.title_font_size = "24px";
chart.legend_font_size = "12px";
chart.marker_font_size = "10px";
chart.title = graph_title;
for(var i = 0; i < graph_series.length; i++) {
var serie = graph_series[i];
chart.data(serie.name, serie.data);
}
chart.labels = graph_labels;
chart.draw();

View File

@ -0,0 +1,499 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SessionsController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> before_action <span class="symbol">:authenticate</span>, <span class="key">except</span>: [ <span class="symbol">:create</span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [<span class="symbol">:create</span>,<span class="symbol">:destroy</span>,<span class="symbol">:show</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> user = <span class="constant">User</span>.find_by(<span class="key">email</span>: params[<span class="symbol">:email</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="keyword">if</span> user &amp;&amp; user.authenticate(params[<span class="symbol">:password</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> session[<span class="symbol">:user_id</span>] = user.id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">ok</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> render <span class="key">status</span>: <span class="symbol">:unauthorized</span>, <span class="key">text</span>: <span class="string"><span class="delimiter">'</span><span class="content">account or password is not correct</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">destroy</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> session.delete <span class="symbol">:user_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="instance-variable">@current_user</span> &amp;&amp;= <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:ok</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">def</span> <span class="function">show</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> render <span class="string"><span class="delimiter">'</span><span class="content">show</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,514 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Missions_user</span> &lt;<span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validate <span class="symbol">:mission_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">mission_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> mission = <span class="constant">Mission</span>.find_by(<span class="key">id</span>: mission_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">if</span> mission == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> errors[<span class="symbol">:mission</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">mission belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,602 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
<meta content='en' http-equiv='Content-Language' />
<title>metrics</title>
<style>
/*
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.5.2
*/
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
/* --------------------------------------------------------------
buttons.css
* Gives you some great CSS-only buttons.
Created by Kevin Hale [particletree.com]
* particletree.com/features/rediscovering-the-button-element
See Readme.txt in this folder for instructions.
-------------------------------------------------------------- */
button {
display:block;
float:left;
margin:0 0.583em 0.667em 0;
padding:5px 10px 5px 7px; /* Links */
border:1px solid #dedede;
border-top:1px solid #eee;
border-left:1px solid #eee;
background-color:#f5f5f5;
font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
font-size:100%;
line-height:130%;
text-decoration:none;
font-weight:bold;
color:#565656;
cursor:pointer;
}
button {
width:auto;
overflow:visible;
padding:4px 10px 3px 7px; /* IE6 */
}
button[type] {
padding:4px 10px 4px 7px; /* Firefox */
line-height:17px; /* Safari */
}
*:first-child+html button[type] {
padding:4px 10px 3px 7px; /* IE7 */
}
button img {
margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px;
height:16px;
float:none;
}
/* Button colors
-------------------------------------------------------------- */
/* Standard */
button:hover {
background-color:#dff4ff;
border:1px solid #c2e1ef;
color:#336699;
}
/* Positive */
body .positive {
color:#529214;
}
button.positive:hover {
background-color:#E6EFC2;
border:1px solid #C6D880;
color:#529214;
}
/* Negative */
body .negative {
color:#d12f19;
}
button.negative:hover {
background:#fbe3e4;
border:1px solid #fbc2c4;
color:#d12f19;
}
html {
background-color: #e0e0e0; }
body {
font-size: 100%;
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
color: #333333; }
a {
color: #ed1556;
text-decoration: none; }
a:hover {
color: #ffffff;
background-color: #ed1556; }
#header, #content, #footer {
margin: 0 auto;
background: #eeeeee;
padding: 0 2em;
z-index: 0;
position: relative;
font-size: 1em; }
#header {
background: #ffffff; }
#header h1 {
font-weight: bold;
font-size: 1.5em; }
#header address.watermark {
position: absolute;
font-weight: bold;
right: 3em;
top: 0;
font-size: .75em;
color: #cccccc; }
#header address.watermark a {
color: #cccccc;
font-weight: bold;
font-size: 2em; }
#header address.watermark a:hover {
background: transparent;
color: #aaaaaa; }
#content {
padding-top: 1em;
padding-bottom: 2em; }
#content strong {
font-weight: bold; }
#content em {
font-style: italic; }
#content h1, #content h2, #content h3, #content h4, #content h5, #content h6 {
color: #4e4e4e; }
#content h1 {
font-size: 2em;
font-weight: bold;
margin-bottom: .75em;
padding: .25em 0;
line-height: 1.2;
border-bottom: 1px solid #c0c0c0; }
#content h2 {
font-weight: bold;
font-size: 1.5em;
margin: 1em 0 .2em; }
#content h3 {
font-weight: bold;
font-size: 1.25em;
margin: .25em 0; }
#content h4, #content h5, #content h6 {
font-weight: bold;
margin-top: .5em; }
#content code, #content pre, #content textarea, #content input {
font-family: Monaco, Deja Vu Sans Mono, Inconsolata, Consolas, monospace; }
#content form p {
margin-top: 1em;
position: relative; }
#content form p.checkbox label {
margin-top: 0 !important; }
#content form input.text, #content form textarea {
width: 30em;
padding: .2em .4em;
color: #4e4e4e; }
#content form input.text {
height: 1.4em; }
#content form label {
float: left;
display: block;
margin-top: .5em;
width: 8em;
margin-right: .75em; }
#content form .with_errors label {
background: red;
color: white;
position: relative;
top: -.7em; }
#content form .with_errors.required label {
position: static;
margin-right: .25em;
padding: 0 .2em; }
#content form .with_errors input, #content form .with_errors textarea {
border: 2px solid #f22;
background: #fee;
color: #222222; }
#content form .required label {
float: none;
display: block;
width: auto;
position: relative;
font-weight: bold;
margin-top: 1em;
text-indent: -.65em; }
#content form .required label:before {
content: "* ";
color: #ed1556; }
#content form .required input.text {
width: 25.6em;
font-size: 24px;
font-weight: bold; }
#content form .normal {
margin-top: 2em; }
#content form h2.notifier label {
float: none;
width: auto;
margin-right: 0; }
#content form h2.notifier label .warning {
font-size: .5em;
font-weight: normal;
color: #999999; }
#content form fieldset {
padding-bottom: 1em;
margin-left: 1.35em;
border-bottom: 1px solid #c0c0c0;
margin-bottom: 1em; }
#content form fieldset h3 {
margin-top: 1em;
margin-bottom: 0; }
#content form fieldset p.normal {
margin-top: 1em; }
#content form fieldset p label {
width: 6.7em; }
#content form p.submit {
margin-top: 2em; }
#content form p.submit:after {
display: block;
clear: both;
float: none;
content: ".";
text-indent: -9999em;
text-align: left; }
#content form p.submit.destroy button, #content form p.submit.manual-build button {
float: none;
display: inline; }
#content form p.submit.manual-build button {
margin-right: 0; }
#content #build form, #content #last_build form {
font-size: .75em; }
#content #build form p.submit, #content #last_build form p.submit {
margin: 0;
padding: 0;
position: absolute;
right: .5em;
top: 1.25em; }
#content .blank_slate p, #content .error p {
position: relative;
top: .3em; }
#content .blank_slate h1, #content .error h1 {
border-width: 0;
margin: 0;
padding: 0; }
#content .blank_slate h1 button, #content .error h1 button {
float: none;
border: 0 none;
background: transparent;
display: inline;
color: #ed1556;
padding: 0.25em 0;
margin: 0; }
#content .blank_slate h1 button:hover, #content .error h1 button:hover {
background: #ed1556;
color: #ffffff; }
#content .error dt {
margin-top: 1.4em;
margin-bottom: .3em;
font-size: 1.75em;
font-family: Georgia, Times New Roman, serif; }
#content .error dd {
line-height: 1.4; }
#content .error .backtrace {
margin: 1em 0;
overflow: scroll;
height: 30em;
border: 1px solid #c0c0c0;
line-height: 1.6; }
#content #projects {
margin: 1em 0 2em;
border-top: 1px solid #c0c0c0; }
#content #projects li {
position: relative;
border-bottom: 1px solid #c0c0c0; }
#content #projects li.odd {
background: #e6e6e6; }
#content #projects li.building {
background: transparent url(/spinner.gif) no-repeat scroll right; }
#content #projects li a {
font-size: 2em;
padding: .25em;
line-height: 1.2;
font-weight: bold;
display: block; }
#content #projects li a.success {
color: #337022; }
#content #projects li a.failed {
color: #ff1100; }
#content #projects li .meta {
position: absolute;
right: .6em;
top: 1.5em;
font-size: 0.8em;
color: #999999;
text-align: right; }
#content #projects li.building .meta {
right: 1.6em; }
#content #projects li.success .meta {
color: #337022; }
#content #projects li.failed .meta {
color: #ff1100; }
#content #previous_builds li a {
display: block;
padding: .25em;
margin-bottom: .25em;
border-width: 1px;
border-style: solid; }
#content #previous_builds li a strong {
font-size: 1.3em; }
#content #previous_builds li a .attribution {
font-size: .9em; }
#content #projects li.success a, #content #previous_builds li.success a {
background-color: #bbf8aa;
border-color: #99d688;
color: #337022; }
#content #projects li.success a .attribution, #content #previous_builds li.success a .attribution {
color: #77b466; }
#content #projects li.success a:hover, #content #previous_builds li.success a:hover {
background-color: #ddffcc; }
#content #projects li.failed a, #content #previous_builds li.failed a {
background-color: #ffbbaa;
border-color: #dd9988;
color: #ff1100; }
#content #projects li.failed a .attribution, #content #previous_builds li.failed a .attribution {
color: #bb7766; }
#content #projects li.failed a:hover, #content #previous_builds li.failed a:hover {
background-color: #ffddcc; }
#content #build, #content #last_build {
position: relative; }
#content #build h1, #content #build blockquote, #content #last_build h1, #content #last_build blockquote {
border-width: 0 1px;
border-style: solid; }
#content #build h1, #content #last_build h1 {
border-top-width: 1px; }
#content #build blockquote, #content #last_build blockquote {
bottom-bottom-width: 1px;
line-height: 1.4; }
#content #build.success h1, #content #build.success blockquote, #content #last_build.success h1, #content #last_build.success blockquote {
background-color: #bbf8aa;
border-color: #99d688 #ccffbb #ccffbb #99d688; }
#content #build.success h1, #content #last_build.success h1 {
color: #337022; }
#content #build.success .meta, #content #last_build.success .meta {
color: #77b466; }
#content #build.failed h1, #content #build.failed blockquote, #content #last_build.failed h1, #content #last_build.failed blockquote {
background-color: #ffbbaa;
border-color: #dd9988 #ffccbb #ffccbb #dd9988; }
#content #build.failed h1, #content #last_build.failed h1 {
color: #ff1100; }
#content #build.failed .meta, #content #last_build.failed .meta {
color: #bb7766; }
#content #build h1, #content #last_build h1 {
margin-top: .5em;
margin-bottom: 0;
padding: .25em;
color: #337022; }
#content #build blockquote, #content #last_build blockquote {
padding: .75em;
margin-bottom: 2em; }
#content #build blockquote .meta, #content #last_build blockquote .meta {
margin-top: 1em;
display: block;
font-size: .9em; }
#content #build pre.output, #content #last_build pre.output {
background: #111;
color: #fff;
padding: .5em;
overflow: auto;
max-height: 50em;
font-size: .825em; }
#content #build pre.output .color30, #content #last_build pre.output .color30 {
color: #333; }
#content #build pre.output .color31, #content #last_build pre.output .color31 {
color: #e33; }
#content #build pre.output .color32, #content #last_build pre.output .color32 {
color: #3e3; }
#content #build pre.output .color33, #content #last_build pre.output .color33 {
color: #ee3; }
#content #build pre.output .color34, #content #last_build pre.output .color34 {
color: #33e; }
#content #build pre.output .color35, #content #last_build pre.output .color35 {
color: #e3e; }
#content #build pre.output .color36, #content #last_build pre.output .color36 {
color: #3ee; }
#content #build pre.output .color37, #content #last_build pre.output .color37 {
color: #fff; }
#content #push_path {
display: block;
margin-top: 1em;
margin-left: 2em; }
#content div#graph {
width: 100%;
height: 600px; }
a.success {
color: #bbf8aa; }
a.success:hover {
background-color: #bbf8aa;
color: white; }
a.failed {
color: #ffbbaa; }
a.failed:hover {
background-color: #ffbbaa;
color: white; }
#footer {
padding: 1.5em 2.5em;
border-top: 1px solid #ccc;
font-size: .8em;
color: #666;
text-align: right; }
#footer strong {
font-weight: bold; }
table {
margin-top: 20px;
border-collapse: collapse;
border: 1px solid #666;
background: #fff;
margin-bottom: 20px;
}
table tr.light {
background: #fff;
}
table tr.dark {
background: #f9f9f9;
}
table tr:hover {
background: #FFFFC0;
}
table td, table th {
padding: 4px;
font-size: 11px;
}
table th {
text-align: center;
color: #337022;
background: #DDFFCC;
font-weight: bold;
border: #99D688 1px solid;
}
table td {
border: #d0d0d0 1px solid;
}
table td.score {
text-align: right;
}
.warning {
background: yellow;
}
.bluff-tooltip {
background: #fff;
border: 1px solid #d1edf5;
padding: 8px 8px 6px;
}
.bluff-tooltip .color {
display: block;
height: 4px;
width: 30px;
margin: 0 0 4px;
overflow: hidden;
}
.bluff-tooltip .data {
font-weight: bold;
}
</style>
<link REL="SHORTCUT ICON" HREF="/favicon.ico">
<script language="javascript" src="utils.js" type="text/javascript"></script>
<script language="javascript" src="js-class.js" type="text/javascript"></script>
<script language="javascript" src="bluff-min.js" type="text/javascript"></script>
<script language="javascript" src="excanvas.js" type="text/javascript"></script>
<script language="javascript" src="standalone-framework.js" type="text/javascript"></script>
<script language="javascript" src="highcharts.js" type="text/javascript"></script>
</head>
<body>
<div id='header'>
<h1><a href="/">metrics</a> | <a href="index.html">ambition</a></h1>
<address class='watermark'>
built with
<a href='https://github.com/metricfu/metric_fu'>MetricFu</a>
</address>
</div>
<div id='content'>
<h3>Source Control Churn Results</h3>
<p>Files that change a lot in your project may be bad a sign.
This task uses your source control log to identify those files.
</p>
<table>
<tr>
<th>File Path</th>
<th>Times Changed</th>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/projects_controller.rb'>app/controllers/projects_controller.rb</a></td>
<td>16</td>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/db/schema.rb'>db/schema.rb</a></td>
<td>12</td>
</tr>
</table>
<p>Classes that change a lot in your project may be bad a sign.</p>
<table>
<tr>
<th>File Path</th>
<th>Times Changed</th>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/missions_controller.rb'>app/controllers/missions_controller.rb</a> MissionsController</td>
<td>1</td>
</tr>
</table>
<p>Methods that change a lot in your project may be bad a sign.</p>
<table>
<tr>
<th>File Path</th>
<th>Times Changed</th>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/missions_controller.rb'>app/controllers/missions_controller.rb</a> MissionsController#detail</td>
<td>1</td>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/missions_controller.rb'>app/controllers/missions_controller.rb</a> MissionsController#create</td>
<td>1</td>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/missions_controller.rb'>app/controllers/missions_controller.rb</a> MissionsController#update</td>
<td>1</td>
</tr>
<tr>
<td><a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/missions_controller.rb'>app/controllers/missions_controller.rb</a> MissionsController#commentPublish</td>
<td>1</td>
</tr>
</table>
<p>Generated on 2017-01-03 10:45:18 +0800</p>
</div>
<script language="javascript" src="bluff_graph.js" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,271 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Project</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> has_and_belongs_to_many <span class="symbol">:users</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validate <span class="symbol">:require_at_least_on_user</span>,<span class="key">on</span>: <span class="symbol">:update</span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">length</span>: { <span class="key">minimum</span>: <span class="integer">1</span>, <span class="key">maximum</span>: <span class="integer">50</span> }, <span class="key">uniqueness</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">require_at_least_on_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">if</span> !users || users.size == <span class="integer">0</span> <span class="comment"># size</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> errors[<span class="symbol">:users</span>] = <span class="string"><span class="delimiter">'</span><span class="content">at least one user in the project</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,275 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Project</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> has_and_belongs_to_many <span class="symbol">:users</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validate <span class="symbol">:require_at_least_on_user</span>,<span class="key">on</span>: <span class="symbol">:update</span> <span class="comment"># </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>, <span class="key">length</span>: { <span class="key">minimum</span>: <span class="integer">1</span>, <span class="key">maximum</span>: <span class="integer">50</span> }, <span class="key">uniqueness</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>Complexity 2 &raquo; saikuro</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">require_at_least_on_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">if</span> !users || users.size == <span class="integer">0</span> <span class="comment"># size</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> errors[<span class="symbol">:users</span>] = <span class="string"><span class="delimiter">'</span><span class="content">at least one user in the project</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,783 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Mission</span> &lt; <span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> has_many <span class="symbol">:comments</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:name</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:deadline</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:priority</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validates <span class="symbol">:status</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> validate <span class="symbol">:priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> validate <span class="symbol">:status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> validate <span class="symbol">:project_exists</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">def</span> <span class="function">priority_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">if</span> priority != <span class="integer">1</span> <span class="keyword">and</span> priority != <span class="integer">2</span> <span class="keyword">and</span> priority != <span class="integer">3</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> errors[<span class="symbol">:priority</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">priority is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="keyword">def</span> <span class="function">status_is_among_valid_values</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> status != <span class="integer">1</span> <span class="keyword">and</span> status != <span class="integer">2</span> <span class="keyword">and</span> status != <span class="integer">3</span> <span class="keyword">and</span> status != <span class="integer">4</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:status</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">status is not among valid values</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment">#puts project_id</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment">#puts project.inspect</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> errors[<span class="symbol">:project_id</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">project_id is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,734 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Comment</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> belongs_to <span class="symbol">:mission</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:comment_has_atleast_one_character</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_id_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">def</span> <span class="function">comment_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">'</span><span class="content">content should has at least one character</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">def</span> <span class="function">user_id_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="comment"># mission controller</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="comment"># def mission_id_should_be_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="comment"># @mission = Mission.find(:mission_id)</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> <span class="comment"># if @mission == nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="comment"># errors[:mission_id] = &quot;mission is not exist&quot;</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="comment"># end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="comment"># end </span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,287 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">ApplicationController</span> &lt; <span class="constant">ActionController</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span> <span class="comment"># Prevent CSRF attacks by raising an exception.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> <span class="comment"># For APIs, you may want to use :null_session instead.</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> protect_from_forgery <span class="key">with</span>: <span class="symbol">:exception</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="keyword">def</span> <span class="function">authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> render <span class="key">status</span>: <span class="symbol">:unauthorized</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span> <span class="keyword">unless</span> session[<span class="string"><span class="delimiter">'</span><span class="content">user_id</span><span class="delimiter">'</span></span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">current_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="instance-variable">@current_user</span> ||= <span class="constant">User</span>.find(session[<span class="symbol">:user_id</span>]) <span class="keyword">if</span> session[<span class="symbol">:user_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> helper_method <span class="symbol">:current_user</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,627 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Share</span> &lt; <span class="constant">ActiveRecord</span>::<span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:content</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> validates <span class="symbol">:project_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> validate <span class="symbol">:share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> validate <span class="symbol">:user_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> validate <span class="symbol">:project_exists</span>,<span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">def</span> <span class="function">share_has_atleast_one_character</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> tmp = content.strip
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">if</span> tmp.length &lt; <span class="integer">1</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> errors[<span class="symbol">:content</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">share content should has at least one character</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="keyword">def</span> <span class="function">project_exists</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> project = <span class="constant">Project</span>.find_by(<span class="key">id</span>: project_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">if</span> project == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> errors[<span class="symbol">:project</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Share is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,918 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">SharesController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>remove trailing whitespace &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="symbol">:create</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="symbol">:getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
<ul>
<li>use model association (for share) &raquo; rails_best_practices</li>
</ul>
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> uid = session[<span class="symbol">:user_id</span>].to_i
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> share=<span class="constant">Share</span>.new(share_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> share.user_id=uid
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">if</span> share.save
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> content = <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;a&gt;</span><span class="delimiter">&quot;</span></span>+<span class="constant">User</span>.find(uid).name + <span class="string"><span class="delimiter">&quot;</span><span class="content">&lt;/a&gt; </span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> pid=share.project_id
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="constant">Projects_user</span>.where(<span class="symbol">:project_id</span> =&gt; pid).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> params_note = {<span class="key">user_id</span>: i.user_id,<span class="key">content</span>: content,<span class="key">category</span>: <span class="integer">1</span>,<span class="key">project_id</span>: pid}
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> note = <span class="constant">Note</span>.new(params_note)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> note.save!
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="key">status</span>: <span class="symbol">:created</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> render <span class="key">json</span>: project.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="comment">#</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">def</span> <span class="function">getShareList</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> <span class="comment">#Todo</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> pid = params[<span class="symbol">:project_id</span>]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span> data = []
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="constant">Share</span>.where(<span class="symbol">:project_id</span> =&gt; pid).order(<span class="string"><span class="delimiter">&quot;</span><span class="content">created_at desc</span><span class="delimiter">&quot;</span></span>).each <span class="keyword">do</span> |i|
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> puts i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> name = <span class="constant">User</span>.find(i.user_id).name
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> data += [{
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="symbol">:name</span> =&gt; name,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> <span class="symbol">:time</span> =&gt; i.created_at,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="symbol">:content</span> =&gt; i.content
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> }]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> render <span class="symbol">:json</span> =&gt; {
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="symbol">:code</span> =&gt; <span class="integer">0</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span> <span class="symbol">:data</span> =&gt; data
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> }
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n51" name="n51">51</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n52" name="n52">52</a></span> <span class="keyword">def</span> <span class="function">share_params</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n53" name="n53">53</a></span> params.require(<span class="symbol">:share</span>).permit(<span class="symbol">:project_id</span>,<span class="symbol">:content</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n54" name="n54">54</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n55" name="n55">55</a></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,63 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">module</span> <span class="class">UsersHelper</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,35 @@
// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
document.createElement("canvas").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement("canvas");a.attachEvent("onreadystatechange",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||
b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"}var c=b.getElementsByTagName("canvas"),d=0;for(;d<c.length;d++)this.initElement(c[d])},
initElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML="";b.attachEvent("onpropertychange",Z);b.attachEvent("onresize",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+"px";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+"px";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case "width":a.style.width=a.attributes.width.nodeValue+"px";a.getContext().clearRect();
break;case "height":a.style.height=a.attributes.height.nodeValue+"px";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+"px";a.firstChild.style.height=a.clientHeight+"px"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=
h}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)=="rgb"){var d=b.indexOf("(",3),f=b.indexOf(")",d+
1),h=b.substring(d+1,f).split(",");a="#";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)=="a")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case "butt":return"flat";case "round":return"round";case "square":default:return"square"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;
var a=b.ownerDocument.createElement("div");a.style.width=b.clientWidth+"px";a.style.height=b.clientHeight+"px";a.style.overflow="hidden";a.style.position="absolute";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=""};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"moveTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};
i.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"lineTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:"bezierCurveTo",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+
0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?"at":"wa",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,
a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,
a,c,d){var f=new D("gradient");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D("gradientradial");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width="auto";b.runtimeStyle.height="auto";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==
5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error("Invalid number of arguments");var q=this.getCoords_(a,c),t=[];t.push(" <g_vml_:group",' coordsize="',k*10,",",k*10,'"',' coordorigin="0,0"',' style="width:',10,"px;height:",10,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push("M11=",
this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",j(q.x/k),",","Dy=",j(q.y/k),"");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push("padding:0 ",j(p.x/k),"px ",j(p.y/k),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",E.join(""),", sizingmethod='clip');")}else t.push("top:",j(q.y/k),"px;left:",j(q.x/k),"px;");t.push(' ">','<g_vml_:image src="',b.src,
'"',' style="width:',k*d,"px;"," height:",k*f,'px;"',' cropleft="',h/n,'"',' croptop="',g/o,'"',' cropright="',(n-h-l)/n,'"',' cropbottom="',(o-g-e)/o,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",t.join(""))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push("<g_vml_:shape",' filled="',!!b,'"',' style="position:absolute;width:',10,"px;height:",10,'px;"',' coordorigin="0 0" coordsize="',k*10," ",k*10,'"',' stroked="',
!b,'"',' path="');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case "moveTo":a.push(" m ",j(e.x),",",j(e.y));break;case "lineTo":a.push(" l ",j(e.x),",",j(e.y));break;case "close":a.push(" x ");e=null;break;case "bezierCurveTo":a.push(" c ",j(e.cp1x),",",j(e.cp1y),",",j(e.cp2x),",",j(e.cp2y),",",j(e.x),",",j(e.y));break;case "at":case "wa":a.push(" ",e.type," ",j(e.x-this.arcScaleX_*e.radius),",",j(e.y-this.arcScaleY_*e.radius),
" ",j(e.x+this.arcScaleX_*e.radius),",",j(e.y+this.arcScaleY_*e.radius)," ",j(e.xStart),",",j(e.yStart)," ",j(e.xEnd),",",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' ">');if(b)if(typeof this.fillStyle=="object"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_=="gradient"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),
z=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+
o+" "+T.color)}a.push('<g_vml_:fill type="',m.type_,'"',' method="none" focus="100%"',' color="',da,'"',' color2="',ea,'"',' colors="',S.join(","),'"',' opacity="',ga,'"',' g_o_:opacity2="',fa,'"',' angle="',r,'"',' focusposition="',n.x,",",n.y,'" />')}else a.push('<g_vml_:fill color="',d,'" opacity="',f,'" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push("<g_vml_:stroke",' opacity="',f,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',aa(this.lineCap),
'"',' weight="',K,'px"',' color="',d,'" />')}a.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",a.join(""))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:"close"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),
this);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,
0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=
M;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();

View File

@ -0,0 +1,879 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">UsersController</span> &lt; <span class="constant">ApplicationController</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> before_action <span class="symbol">:authenticate</span>, <span class="key">except</span>: [ <span class="symbol">:emailExist</span>, <span class="symbol">:usernameExist</span>, <span class="symbol">:create</span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> skip_before_action <span class="symbol">:verify_authenticity_token</span>, <span class="symbol">:only</span> =&gt; [
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span> <span class="symbol">:emailExist</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> <span class="symbol">:usernameExist</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> <span class="symbol">:create</span>,
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span> <span class="symbol">:update</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> ]
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span> <span class="keyword">def</span> <span class="function">emailExist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> <span class="keyword">if</span> checkExist?(<span class="symbol">:email</span>, params[<span class="symbol">:email</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span> <span class="keyword">def</span> <span class="function">usernameExist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">if</span> checkExist?(<span class="symbol">:name</span>, params[<span class="symbol">:username</span>])
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">exist</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> render <span class="symbol">:text</span> =&gt; <span class="string"><span class="delimiter">'</span><span class="content">not exist</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">def</span> <span class="function">create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span> <span class="instance-variable">@user</span> = <span class="constant">User</span>.new(user_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span> <span class="keyword">if</span> <span class="instance-variable">@user</span>.save
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span> render <span class="key">status</span>: <span class="symbol">:created</span>, <span class="key">nothing</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n31" name="n31">31</a></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n32" name="n32">32</a></span> render <span class="key">json</span>: <span class="instance-variable">@user</span>.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n33" name="n33">33</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n34" name="n34">34</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n35" name="n35">35</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n36" name="n36">36</a></span> <span class="keyword">def</span> <span class="function">update</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n37" name="n37">37</a></span> <span class="instance-variable">@user</span> = current_user
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n38" name="n38">38</a></span> <span class="keyword">if</span> <span class="instance-variable">@user</span>.update(user_params)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n39" name="n39">39</a></span> render <span class="string"><span class="delimiter">'</span><span class="content">show</span><span class="delimiter">'</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n40" name="n40">40</a></strong></span> <span class="keyword">else</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n41" name="n41">41</a></span> render <span class="key">json</span>:current_user.errors, <span class="key">status</span>: <span class="symbol">:unprocessable_entity</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n42" name="n42">42</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n43" name="n43">43</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n44" name="n44">44</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n45" name="n45">45</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n46" name="n46">46</a></span> <span class="keyword">def</span> <span class="function">checkExist?</span>(field_name, value)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n47" name="n47">47</a></span> <span class="constant">User</span>.exists?(field_name =&gt; value)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n48" name="n48">48</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n49" name="n49">49</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n50" name="n50">50</a></strong></span> <span class="keyword">def</span> <span class="function">user_params</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n51" name="n51">51</a></span> params.require(<span class="symbol">:user</span>).permit(<span class="symbol">:name</span>,<span class="symbol">:password</span>, <span class="symbol">:password_confirmation</span>, <span class="symbol">:email</span>, <span class="symbol">:phone</span>)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n52" name="n52">52</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n53" name="n53">53</a></span><span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,510 @@
<html>
<head>
<style>
table { background: #fff; color: #000; }
.ruby .normal { color: #000; }
.ruby .comment { color: #005; font-style: italic; }
.ruby .keyword { color: #A44; font-weight: bold; }
.ruby .method { color: #44f; }
.ruby .class { color: #b1713d; }
.ruby .module { color: #050; }
.ruby .punct { color: #668; font-weight: bold; }
.ruby .symbol { color: #00f; }
.ruby .string { color: #4a4; }
.ruby .char { color: #F07; }
.ruby .ident { color: #000; }
.ruby .constant { color: #b1713d; }
.ruby .regex { color: #B66; background: #FEF; }
.ruby .number { color: #F99; }
.ruby .attribute { color: #f84; }
.ruby .global { color: #7FB; }
.ruby .expr { color: #227; }
.ruby .escape { color: #277; }
</style>
<title>Analyzed File Report</title>
</head>
<body>
<table cellpadding='0' cellspacing='0' class='ruby'>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1">1</a></span><span class="keyword">class</span> <span class="class">Missions_user</span> &lt;<span class="constant">ActiveRecord</span>:: <span class="constant">Base</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n2" name="n2">2</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n3" name="n3">3</a></span> validates <span class="symbol">:mission_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n4" name="n4">4</a></span> validates <span class="symbol">:user_id</span>, <span class="key">presence</span>: <span class="predefined-constant">true</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n5" name="n5">5</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n6" name="n6">6</a></span> validate <span class="symbol">:mission_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n7" name="n7">7</a></span> validate <span class="symbol">:user_exist</span>, <span class="key">on</span>: <span class="symbol">:create</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n8" name="n8">8</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"> <a href="#n9" name="n9">9</a></span> private
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span> <span class="keyword">def</span> <span class="function">mission_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n11" name="n11">11</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n12" name="n12">12</a></span> mission = <span class="constant">Mission</span>.find_by(<span class="key">id</span>: mission_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n13" name="n13">13</a></span> <span class="keyword">if</span> mission == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n14" name="n14">14</a></span> errors[<span class="symbol">:mission</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">mission belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n15" name="n15">15</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n16" name="n16">16</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n17" name="n17">17</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n18" name="n18">18</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n19" name="n19">19</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span> <span class="keyword">def</span> <span class="function">user_exist</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n21" name="n21">21</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n22" name="n22">22</a></span> user = <span class="constant">User</span>.find_by(<span class="key">id</span>: user_id)
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n23" name="n23">23</a></span> <span class="keyword">if</span> user == <span class="predefined-constant">nil</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n24" name="n24">24</a></span> errors[<span class="symbol">:user</span>] = <span class="string"><span class="delimiter">&quot;</span><span class="content">user belong to Missions_user is not exist</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n25" name="n25">25</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n26" name="n26">26</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n27" name="n27">27</a></span> <span class="keyword">end</span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n28" name="n28">28</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><a href="#n29" name="n29">29</a></span>
</pre></div>
</div>
</td>
</tr>
<tr>
<td valign='top'>
&nbsp;
</td>
<td valign='top'>
<div class="CodeRay">
<div class="code"><pre><span class="line-numbers"><strong><a href="#n30" name="n30">30</a></strong></span><span class="keyword">end</span></pre></div>
</div>
</td>
</tr>
</table>
</body>
</html>

View File

@ -0,0 +1,604 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
<meta content='en' http-equiv='Content-Language' />
<title>metrics</title>
<style>
/*
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.5.2
*/
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
/* --------------------------------------------------------------
buttons.css
* Gives you some great CSS-only buttons.
Created by Kevin Hale [particletree.com]
* particletree.com/features/rediscovering-the-button-element
See Readme.txt in this folder for instructions.
-------------------------------------------------------------- */
button {
display:block;
float:left;
margin:0 0.583em 0.667em 0;
padding:5px 10px 5px 7px; /* Links */
border:1px solid #dedede;
border-top:1px solid #eee;
border-left:1px solid #eee;
background-color:#f5f5f5;
font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
font-size:100%;
line-height:130%;
text-decoration:none;
font-weight:bold;
color:#565656;
cursor:pointer;
}
button {
width:auto;
overflow:visible;
padding:4px 10px 3px 7px; /* IE6 */
}
button[type] {
padding:4px 10px 4px 7px; /* Firefox */
line-height:17px; /* Safari */
}
*:first-child+html button[type] {
padding:4px 10px 3px 7px; /* IE7 */
}
button img {
margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px;
height:16px;
float:none;
}
/* Button colors
-------------------------------------------------------------- */
/* Standard */
button:hover {
background-color:#dff4ff;
border:1px solid #c2e1ef;
color:#336699;
}
/* Positive */
body .positive {
color:#529214;
}
button.positive:hover {
background-color:#E6EFC2;
border:1px solid #C6D880;
color:#529214;
}
/* Negative */
body .negative {
color:#d12f19;
}
button.negative:hover {
background:#fbe3e4;
border:1px solid #fbc2c4;
color:#d12f19;
}
html {
background-color: #e0e0e0; }
body {
font-size: 100%;
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
color: #333333; }
a {
color: #ed1556;
text-decoration: none; }
a:hover {
color: #ffffff;
background-color: #ed1556; }
#header, #content, #footer {
margin: 0 auto;
background: #eeeeee;
padding: 0 2em;
z-index: 0;
position: relative;
font-size: 1em; }
#header {
background: #ffffff; }
#header h1 {
font-weight: bold;
font-size: 1.5em; }
#header address.watermark {
position: absolute;
font-weight: bold;
right: 3em;
top: 0;
font-size: .75em;
color: #cccccc; }
#header address.watermark a {
color: #cccccc;
font-weight: bold;
font-size: 2em; }
#header address.watermark a:hover {
background: transparent;
color: #aaaaaa; }
#content {
padding-top: 1em;
padding-bottom: 2em; }
#content strong {
font-weight: bold; }
#content em {
font-style: italic; }
#content h1, #content h2, #content h3, #content h4, #content h5, #content h6 {
color: #4e4e4e; }
#content h1 {
font-size: 2em;
font-weight: bold;
margin-bottom: .75em;
padding: .25em 0;
line-height: 1.2;
border-bottom: 1px solid #c0c0c0; }
#content h2 {
font-weight: bold;
font-size: 1.5em;
margin: 1em 0 .2em; }
#content h3 {
font-weight: bold;
font-size: 1.25em;
margin: .25em 0; }
#content h4, #content h5, #content h6 {
font-weight: bold;
margin-top: .5em; }
#content code, #content pre, #content textarea, #content input {
font-family: Monaco, Deja Vu Sans Mono, Inconsolata, Consolas, monospace; }
#content form p {
margin-top: 1em;
position: relative; }
#content form p.checkbox label {
margin-top: 0 !important; }
#content form input.text, #content form textarea {
width: 30em;
padding: .2em .4em;
color: #4e4e4e; }
#content form input.text {
height: 1.4em; }
#content form label {
float: left;
display: block;
margin-top: .5em;
width: 8em;
margin-right: .75em; }
#content form .with_errors label {
background: red;
color: white;
position: relative;
top: -.7em; }
#content form .with_errors.required label {
position: static;
margin-right: .25em;
padding: 0 .2em; }
#content form .with_errors input, #content form .with_errors textarea {
border: 2px solid #f22;
background: #fee;
color: #222222; }
#content form .required label {
float: none;
display: block;
width: auto;
position: relative;
font-weight: bold;
margin-top: 1em;
text-indent: -.65em; }
#content form .required label:before {
content: "* ";
color: #ed1556; }
#content form .required input.text {
width: 25.6em;
font-size: 24px;
font-weight: bold; }
#content form .normal {
margin-top: 2em; }
#content form h2.notifier label {
float: none;
width: auto;
margin-right: 0; }
#content form h2.notifier label .warning {
font-size: .5em;
font-weight: normal;
color: #999999; }
#content form fieldset {
padding-bottom: 1em;
margin-left: 1.35em;
border-bottom: 1px solid #c0c0c0;
margin-bottom: 1em; }
#content form fieldset h3 {
margin-top: 1em;
margin-bottom: 0; }
#content form fieldset p.normal {
margin-top: 1em; }
#content form fieldset p label {
width: 6.7em; }
#content form p.submit {
margin-top: 2em; }
#content form p.submit:after {
display: block;
clear: both;
float: none;
content: ".";
text-indent: -9999em;
text-align: left; }
#content form p.submit.destroy button, #content form p.submit.manual-build button {
float: none;
display: inline; }
#content form p.submit.manual-build button {
margin-right: 0; }
#content #build form, #content #last_build form {
font-size: .75em; }
#content #build form p.submit, #content #last_build form p.submit {
margin: 0;
padding: 0;
position: absolute;
right: .5em;
top: 1.25em; }
#content .blank_slate p, #content .error p {
position: relative;
top: .3em; }
#content .blank_slate h1, #content .error h1 {
border-width: 0;
margin: 0;
padding: 0; }
#content .blank_slate h1 button, #content .error h1 button {
float: none;
border: 0 none;
background: transparent;
display: inline;
color: #ed1556;
padding: 0.25em 0;
margin: 0; }
#content .blank_slate h1 button:hover, #content .error h1 button:hover {
background: #ed1556;
color: #ffffff; }
#content .error dt {
margin-top: 1.4em;
margin-bottom: .3em;
font-size: 1.75em;
font-family: Georgia, Times New Roman, serif; }
#content .error dd {
line-height: 1.4; }
#content .error .backtrace {
margin: 1em 0;
overflow: scroll;
height: 30em;
border: 1px solid #c0c0c0;
line-height: 1.6; }
#content #projects {
margin: 1em 0 2em;
border-top: 1px solid #c0c0c0; }
#content #projects li {
position: relative;
border-bottom: 1px solid #c0c0c0; }
#content #projects li.odd {
background: #e6e6e6; }
#content #projects li.building {
background: transparent url(/spinner.gif) no-repeat scroll right; }
#content #projects li a {
font-size: 2em;
padding: .25em;
line-height: 1.2;
font-weight: bold;
display: block; }
#content #projects li a.success {
color: #337022; }
#content #projects li a.failed {
color: #ff1100; }
#content #projects li .meta {
position: absolute;
right: .6em;
top: 1.5em;
font-size: 0.8em;
color: #999999;
text-align: right; }
#content #projects li.building .meta {
right: 1.6em; }
#content #projects li.success .meta {
color: #337022; }
#content #projects li.failed .meta {
color: #ff1100; }
#content #previous_builds li a {
display: block;
padding: .25em;
margin-bottom: .25em;
border-width: 1px;
border-style: solid; }
#content #previous_builds li a strong {
font-size: 1.3em; }
#content #previous_builds li a .attribution {
font-size: .9em; }
#content #projects li.success a, #content #previous_builds li.success a {
background-color: #bbf8aa;
border-color: #99d688;
color: #337022; }
#content #projects li.success a .attribution, #content #previous_builds li.success a .attribution {
color: #77b466; }
#content #projects li.success a:hover, #content #previous_builds li.success a:hover {
background-color: #ddffcc; }
#content #projects li.failed a, #content #previous_builds li.failed a {
background-color: #ffbbaa;
border-color: #dd9988;
color: #ff1100; }
#content #projects li.failed a .attribution, #content #previous_builds li.failed a .attribution {
color: #bb7766; }
#content #projects li.failed a:hover, #content #previous_builds li.failed a:hover {
background-color: #ffddcc; }
#content #build, #content #last_build {
position: relative; }
#content #build h1, #content #build blockquote, #content #last_build h1, #content #last_build blockquote {
border-width: 0 1px;
border-style: solid; }
#content #build h1, #content #last_build h1 {
border-top-width: 1px; }
#content #build blockquote, #content #last_build blockquote {
bottom-bottom-width: 1px;
line-height: 1.4; }
#content #build.success h1, #content #build.success blockquote, #content #last_build.success h1, #content #last_build.success blockquote {
background-color: #bbf8aa;
border-color: #99d688 #ccffbb #ccffbb #99d688; }
#content #build.success h1, #content #last_build.success h1 {
color: #337022; }
#content #build.success .meta, #content #last_build.success .meta {
color: #77b466; }
#content #build.failed h1, #content #build.failed blockquote, #content #last_build.failed h1, #content #last_build.failed blockquote {
background-color: #ffbbaa;
border-color: #dd9988 #ffccbb #ffccbb #dd9988; }
#content #build.failed h1, #content #last_build.failed h1 {
color: #ff1100; }
#content #build.failed .meta, #content #last_build.failed .meta {
color: #bb7766; }
#content #build h1, #content #last_build h1 {
margin-top: .5em;
margin-bottom: 0;
padding: .25em;
color: #337022; }
#content #build blockquote, #content #last_build blockquote {
padding: .75em;
margin-bottom: 2em; }
#content #build blockquote .meta, #content #last_build blockquote .meta {
margin-top: 1em;
display: block;
font-size: .9em; }
#content #build pre.output, #content #last_build pre.output {
background: #111;
color: #fff;
padding: .5em;
overflow: auto;
max-height: 50em;
font-size: .825em; }
#content #build pre.output .color30, #content #last_build pre.output .color30 {
color: #333; }
#content #build pre.output .color31, #content #last_build pre.output .color31 {
color: #e33; }
#content #build pre.output .color32, #content #last_build pre.output .color32 {
color: #3e3; }
#content #build pre.output .color33, #content #last_build pre.output .color33 {
color: #ee3; }
#content #build pre.output .color34, #content #last_build pre.output .color34 {
color: #33e; }
#content #build pre.output .color35, #content #last_build pre.output .color35 {
color: #e3e; }
#content #build pre.output .color36, #content #last_build pre.output .color36 {
color: #3ee; }
#content #build pre.output .color37, #content #last_build pre.output .color37 {
color: #fff; }
#content #push_path {
display: block;
margin-top: 1em;
margin-left: 2em; }
#content div#graph {
width: 100%;
height: 600px; }
a.success {
color: #bbf8aa; }
a.success:hover {
background-color: #bbf8aa;
color: white; }
a.failed {
color: #ffbbaa; }
a.failed:hover {
background-color: #ffbbaa;
color: white; }
#footer {
padding: 1.5em 2.5em;
border-top: 1px solid #ccc;
font-size: .8em;
color: #666;
text-align: right; }
#footer strong {
font-weight: bold; }
table {
margin-top: 20px;
border-collapse: collapse;
border: 1px solid #666;
background: #fff;
margin-bottom: 20px;
}
table tr.light {
background: #fff;
}
table tr.dark {
background: #f9f9f9;
}
table tr:hover {
background: #FFFFC0;
}
table td, table th {
padding: 4px;
font-size: 11px;
}
table th {
text-align: center;
color: #337022;
background: #DDFFCC;
font-weight: bold;
border: #99D688 1px solid;
}
table td {
border: #d0d0d0 1px solid;
}
table td.score {
text-align: right;
}
.warning {
background: yellow;
}
.bluff-tooltip {
background: #fff;
border: 1px solid #d1edf5;
padding: 8px 8px 6px;
}
.bluff-tooltip .color {
display: block;
height: 4px;
width: 30px;
margin: 0 0 4px;
overflow: hidden;
}
.bluff-tooltip .data {
font-weight: bold;
}
</style>
<link REL="SHORTCUT ICON" HREF="/favicon.ico">
<script language="javascript" src="utils.js" type="text/javascript"></script>
<script language="javascript" src="js-class.js" type="text/javascript"></script>
<script language="javascript" src="bluff-min.js" type="text/javascript"></script>
<script language="javascript" src="excanvas.js" type="text/javascript"></script>
<script language="javascript" src="standalone-framework.js" type="text/javascript"></script>
<script language="javascript" src="highcharts.js" type="text/javascript"></script>
</head>
<body>
<div id='header'>
<h1><a href="/">metrics</a> | <a href="index.html">ambition</a></h1>
<address class='watermark'>
built with
<a href='https://github.com/metricfu/metric_fu'>MetricFu</a>
</address>
</div>
<div id='content'>
<h3>Flay Results</h3>
<p><a href='http://ruby.sadi.st/Flay.html'>Flay</a> analyzes ruby code for structural similarities.</p>
<div id="graph_container"></div>
<script language="javascript" src="flay.js?1483411518" type="text/javascript"></script>
<h4>Total Score (lower is better): 268</h4>
<h5>Scores less than are not shown or part of the total</h5>
<table>
<tr>
<th>Files</th>
<th>Matches</th>
</tr>
<tr class='light'>
<td>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/comment.rb'>app/models/comment.rb:23</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/mission.rb'>app/models/mission.rb:36</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/missions_user.rb'>app/models/missions_user.rb:10</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/missions_user.rb'>app/models/missions_user.rb:20</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/note.rb'>app/models/note.rb:32</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/note.rb'>app/models/note.rb:41</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/projects_user.rb'>app/models/projects_user.rb:11</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/projects_user.rb'>app/models/projects_user.rb:20</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/share.rb'>app/models/share.rb:20</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/share.rb'>app/models/share.rb:28</a><br/>
</td>
<td>1) Similar code found in :defn (mass = 160)</td>
</tr>
<tr class='dark'>
<td>
<a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/projects_controller.rb'>app/controllers/projects_controller.rb:66</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/projects_controller.rb'>app/controllers/projects_controller.rb:92</a><br/>
</td>
<td>2) Similar code found in :lasgn (mass = 40)</td>
</tr>
<tr class='light'>
<td>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/mission.rb'>app/models/mission.rb:22</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/models/note.rb'>app/models/note.rb:24</a><br/>
</td>
<td>3) Similar code found in :defn (mass = 36)</td>
</tr>
<tr class='dark'>
<td>
<a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/users_controller.rb'>app/controllers/users_controller.rb:11</a><br/>
<a href='file:///home/ccx/RubymineProjects/ambition/app/controllers/users_controller.rb'>app/controllers/users_controller.rb:19</a><br/>
</td>
<td>4) Similar code found in :defn (mass = 32)</td>
</tr>
</table>
<p>Generated on 2017-01-03 10:45:18 +0800</p>
</div>
<script language="javascript" src="bluff_graph.js" type="text/javascript"></script>
</body>
</html>

View File

@ -0,0 +1,3 @@
var graph_title = 'Flay: duplication';
var graph_series = [{name: 'flay', data: [268]}];
var graph_labels = {"0":"1/3"};

View File

@ -0,0 +1,294 @@
/*
Highcharts JS v3.0.9 (2014-01-15)
(c) 2009-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function x(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a<c;a++)d=e(d,b[a]);return d}function z(a,b){return parseInt(a,b||10)}function fa(a){return typeof a===
"string"}function S(a){return typeof a==="object"}function Ka(a){return Object.prototype.toString.call(a)==="[object Array]"}function wa(a){return typeof a==="number"}function xa(a){return P.log(a)/P.LN10}function ga(a){return P.pow(10,a)}function ha(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function t(a){return a!==u&&a!==null}function v(a,b,c){var d,e;if(fa(b))t(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));else if(t(b)&&S(b))for(d in b)a.setAttribute(d,b[d]);
return e}function ja(a){return Ka(a)?a:[a]}function n(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],typeof c!=="undefined"&&c!==null)return c}function D(a,b){if(ya&&b&&b.opacity!==u)b.filter="alpha(opacity="+b.opacity*100+")";r(a.style,b)}function T(a,b,c,d,e){a=y.createElement(a);b&&r(a,b);e&&D(a,{padding:0,border:Q,margin:0});c&&D(a,c);d&&d.appendChild(a);return a}function ia(a,b){var c=function(){};c.prototype=new a;r(c.prototype,b);return c}function Da(a,b,c,d){var e=G.lang,a=+a||
0,f=b===-1?(a.toString().split(".")[1]||"").length:isNaN(b=M(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(z(a=M(a).toFixed(f))),g=c.length>3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+M(a-c).toFixed(f).slice(2):"")}function Ea(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Va(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this,
a)}}function Fa(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h<i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=G.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e=Da(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:"")):e=ab(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function mb(a){return P.pow(10,N(P.log(a)/P.LN10))}function nb(a,b,c,d){var e,c=n(c,
1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d<b.length;d++)if(a=b[d],e<=(b[d]+(b[d+1]||b[d]))/2)break;a*=c;return a}function Ab(){this.symbol=this.color=0}function ob(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(function(a,c){d=b(a,c);return d===0?a.ss_i-c.ss_i:d});for(e=0;e<c;e++)delete a[e].ss_i}function La(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}function za(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=
a[b]);return c}function Ma(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Na(a){bb||(bb=T(Ga));a&&bb.appendChild(a);bb.innerHTML=""}function ka(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else C.console&&console.log(c)}function aa(a){return parseFloat(a.toPrecision(14))}function Oa(a,b){oa=n(a,b.animation)}function Bb(){var a=G.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Pa=(a&&G.global.timezoneOffset||0)*6E4;cb=a?
Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,n(c,1),n(g,0),n(h,0),n(i,0))).getTime()};pb=b+"Minutes";qb=b+"Hours";rb=b+"Day";Wa=b+"Date";db=b+"Month";eb=b+"FullYear";Cb=c+"Minutes";Db=c+"Hours";sb=c+"Date";Eb=c+"Month";Fb=c+"FullYear"}function pa(){}function Qa(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function qa(){this.init.apply(this,arguments)}function Gb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;
this.total=null;this.points={};this.stack=e;this.percent=f==="percent";this.alignOptions={align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:n(b.y,g?4:c?14:-6),x:n(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function tb(){this.init.apply(this,arguments)}function fb(){this.init.apply(this,arguments)}var u,y=document,C=window,P=Math,w=P.round,N=P.floor,Ha=P.ceil,s=P.max,I=P.min,M=P.abs,U=P.cos,ba=P.sin,Aa=P.PI,Ba=
Aa*2/360,ra=navigator.userAgent,Hb=C.opera,ya=/msie/i.test(ra)&&!Hb,gb=y.documentMode===8,hb=/AppleWebKit/.test(ra),Xa=/Firefox/.test(ra),Ib=/(Mobile|Android|Windows Phone)/.test(ra),Ca="http://www.w3.org/2000/svg",V=!!y.createElementNS&&!!y.createElementNS(Ca,"svg").createSVGRect,Nb=Xa&&parseInt(ra.split("Firefox/")[1],10)<4,da=!V&&!ya&&!!y.createElement("canvas").getContext,Ya,ib=y.documentElement.ontouchstart!==u,Jb={},ub=0,bb,G,ab,oa,vb,E,la=function(){},Ia=[],Ga="div",Q="none",Ob=/^[0-9]+$/,
Kb="rgba(192,192,192,"+(V?1.0E-4:0.002)+")",Lb="stroke-width",cb,Pa,pb,qb,rb,Wa,db,eb,Cb,Db,sb,Eb,Fb,L={};C.Highcharts=C.Highcharts?ka(16,!0):{};ab=function(a,b,c){if(!t(b)||isNaN(b))return"Invalid date";var a=n(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b-Pa),e,f=d[qb](),g=d[rb](),h=d[Wa](),i=d[db](),j=d[eb](),k=G.lang,l=k.weekdays,d=r({a:l[g].substr(0,3),A:l[g],d:Ea(h),e:h,b:k.shortMonths[i],B:k.months[i],m:Ea(i+1),y:j.toString().substr(2,2),Y:j,H:Ea(f),I:Ea(f%12||12),l:f%12||12,M:Ea(d[pb]()),p:f<12?"AM":
"PM",P:f<12?"am":"pm",S:Ea(d.getSeconds()),L:Ea(w(b%1E3),3)},Highcharts.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};Ab.prototype={wrapColor:function(a){if(this.color>=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};E=function(){for(var a=0,b=arguments,c=b.length,d={};a<c;a++)d[b[a++]]=b[a];return d}("millisecond",1,"second",1E3,"minute",6E4,"hour",36E5,"day",
864E5,"week",6048E5,"month",26784E5,"year",31556952E3);vb={init:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.length-f,
f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(a,b,c,d){var e=[],f=a.length;if(c===1)e=d;else if(f===b.length&&c<1)for(;f--;)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:c*parseFloat(b[f]-d)+d;else e=b;return e}};(function(a){C.HighchartsAdapter=C.HighchartsAdapter||a&&{init:function(b){var c=a.fx,d=c.step,e,f=a.Tween,g=f&&f.propHooks;e=a.cssHooks.opacity;a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}});a.each(["cur",
"_default","width","height","opacity"],function(a,b){var e=d,k;b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");(k=e[b])&&(e[b]=function(c){var d,c=a?c:this;if(c.prop!=="align")return d=c.elem,d.attr?d.attr(c.prop,b==="cur"?u:c.now):k.apply(this,arguments)})});Va(e,"get",function(a,b,c){return b.attr?b.opacity||0:a.call(this,b,c)});e=function(a){var c=a.elem,d;if(!a.started)d=b.init(c,c.d,c.toD),a.start=d[0],a.end=d[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.toD))};f?g.d={set:e}:
d.d=e;this.each=Array.prototype.forEach?function(a,b){return Array.prototype.forEach.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(b.call(a[c],a[c],c,a)===!1)return c};a.fn.highcharts=function(){var a="Chart",b=arguments,c,d;fa(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));c=b[0];if(c!==u)c.chart=c.chart||{},c.chart.renderTo=this[0],new Highcharts[a](c,b[1]),d=this;c===u&&(d=Ia[v(this[0],"data-highcharts-chart")]);return d}},getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,
c){return a(b)[c]()},grep:a.grep,map:function(a,c){for(var d=[],e=0,f=a.length;e<f;e++)d[e]=c.call(a[e],a[e],e,a);return d},offset:function(b){return a(b).offset()},addEvent:function(b,c,d){a(b).bind(c,d)},removeEvent:function(b,c,d){var e=y.removeEventListener?"removeEventListener":"detachEvent";y[e]&&b&&!b[e]&&(b[e]=function(){});a(b).unbind(c,d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!ya&&d&&(delete d.layerX,delete d.layerY);r(f,d);b[c]&&(b[g]=b[c],b[c]=null);a.each(["preventDefault",
"stopPropagation"],function(a,b){var c=f[b];f[b]=function(){try{c.call(f)}catch(a){b==="preventDefault"&&(h=!0)}}});a(b).trigger(f);b[g]&&(b[c]=b[g],b[g]=null);e&&!f.isDefaultPrevented()&&!h&&e(f)},washMouseEvent:function(a){var c=a.originalEvent||a;if(c.pageX===u)c.pageX=a.pageX,c.pageY=a.pageY;return c},animate:function(b,c,d){var e=a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==u&&b.attr&&(c.opacity+="px");e.animate(c,d)},stop:function(b){a(b).stop()}}})(C.jQuery);var W=
C.HighchartsAdapter,J=W||{};W&&W.init.call(W,vb);var jb=J.adapterRun,Pb=J.getScript,sa=J.inArray,p=J.each,wb=J.grep,Qb=J.offset,Ra=J.map,F=J.addEvent,X=J.removeEvent,A=J.fireEvent,Rb=J.washMouseEvent,kb=J.animate,Za=J.stop,J={enabled:!0,x:0,y:15,style:{color:"#666",cursor:"default",fontSize:"11px"}};G={colors:"#2f7ed8,#0d233a,#8bbc21,#910000,#1aadce,#492970,#f28f43,#77a1e5,#c42525,#a6c96a".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),
shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/3.0.9/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/3.0.9/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:5,
defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#274b6d",fontSize:"16px"}},subtitle:{text:"",align:"center",style:{color:"#4d759e"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,
animation:{duration:1E3},events:{},lineWidth:2,marker:{enabled:!0,lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:x(J,{align:"center",enabled:!1,formatter:function(){return this.y===null?"":Da(this.y,-1)},verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,states:{hover:{marker:{}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3}},labels:{style:{position:"absolute",color:"#3E576F"}},
legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderWidth:1,borderColor:"#909090",borderRadius:5,navigation:{activeColor:"#274b6d",inactiveColor:"#CCC"},shadow:!1,itemStyle:{cursor:"pointer",color:"#274b6d",fontSize:"12px"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",
position:"relative",top:"1em"},style:{position:"absolute",backgroundColor:"white",opacity:0.5,textAlign:"center"}},tooltip:{enabled:!0,animation:V,backgroundColor:"rgba(255, 255, 255, .85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',
pointFormat:'<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b><br/>',shadow:!0,snap:Ib?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var Y=G.plotOptions,W=Y.line;Bb();var Sb=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,
Tb=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,Ub=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,ta=function(a){var b=[],c,d;(function(a){a&&a.stops?d=Ra(a.stops,function(a){return ta(a[1])}):(c=Sb.exec(a))?b=[z(c[1]),z(c[2]),z(c[3]),parseFloat(c[4],10)]:(c=Tb.exec(a))?b=[z(c[1],16),z(c[2],16),z(c[3],16),1]:(c=Ub.exec(a))&&(b=[z(c[1]),z(c[2]),z(c[3]),1])})(a);return{get:function(c){var f;d?(f=x(a),f.stops=[].concat(f.stops),p(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):
f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)p(d,function(b){b.brighten(a)});else if(wa(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=z(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};pa.prototype={init:function(a,b){this.element=b==="span"?T(b):y.createElementNS(Ca,b);this.renderer=a;this.attrSetters={}},opacity:1,animate:function(a,b,c){b=n(b,oa,!0);
Za(this);if(b){b=x(b);if(c)b.complete=c;kb(this,a,b)}else this.attr(a),c&&c()},attr:function(a,b){var c,d,e,f,g=this.element,h=g.nodeName.toLowerCase(),i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,q,o=this;fa(a)&&t(b)&&(c=a,a={},a[c]=b);if(fa(a))c=a,h==="circle"?c={x:"cx",y:"cy"}[c]||c:c==="strokeWidth"&&(c="stroke-width"),o=v(g,c)||this[c]||0,c!=="d"&&c!=="visibility"&&c!=="fill"&&(o=parseFloat(o));else{for(c in a)if(j=!1,d=a[c],e=k[c]&&k[c].call(this,d,c),e!==!1){e!==u&&(d=e);if(c==="d")d&&
d.join&&(d=d.join(" ")),/(NaN| {2}|^$)/.test(d)&&(d="M 0 0");else if(c==="x"&&h==="text")for(e=0;e<g.childNodes.length;e++)f=g.childNodes[e],v(f,"x")===v(g,"x")&&v(f,"x",d);else if(this.rotation&&(c==="x"||c==="y"))q=!0;else if(c==="fill")d=i.color(d,g,c);else if(h==="circle"&&(c==="x"||c==="y"))c={x:"cx",y:"cy"}[c]||c;else if(h==="rect"&&c==="r")v(g,{rx:d,ry:d}),j=!0;else if(c==="translateX"||c==="translateY"||c==="rotation"||c==="verticalAlign"||c==="scaleX"||c==="scaleY")j=q=!0;else if(c==="stroke")d=
i.color(d,g,c);else if(c==="dashstyle")if(c="stroke-dasharray",d=d&&d.toLowerCase(),d==="solid")d=Q;else{if(d){d=d.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(e=d.length;e--;)d[e]=z(d[e])*n(a["stroke-width"],this["stroke-width"]);d=d.join(",")}}else if(c==="width")d=z(d);else if(c==="align")c="text-anchor",d=
{left:"start",center:"middle",right:"end"}[d];else if(c==="title")e=g.getElementsByTagName("title")[0],e||(e=y.createElementNS(Ca,"title"),g.appendChild(e)),e.textContent=d;c==="strokeWidth"&&(c="stroke-width");if(c==="stroke-width"||c==="stroke"){this[c]=d;if(this.stroke&&this["stroke-width"])v(g,"stroke",this.stroke),v(g,"stroke-width",this["stroke-width"]),this.hasStroke=!0;else if(c==="stroke-width"&&d===0&&this.hasStroke)g.removeAttribute("stroke"),this.hasStroke=!1;j=!0}this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&
(m||(this.symbolAttr(a),m=!0),j=!0);if(l&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c))for(e=l.length;e--;)v(l[e],c,c==="height"?s(d-(l[e].cutHeight||0),0):d);if((c==="width"||c==="height")&&h==="rect"&&d<0)d=0;this[c]=d;c==="text"?(d!==this.textStr&&delete this.bBox,this.textStr=d,this.added&&i.buildText(this)):j||v(g,c,d)}q&&this.updateTransform()}return o},addClass:function(a){var b=this.element,c=v(b,"class")||"";c.indexOf(a)===-1&&v(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=
this;p("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=n(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":Q)},crisp:function(a,b,c,d,e){var f,g={},h={},i,a=a||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;i=w(a)%2/2;h.x=N(b||this.x||0)+i;h.y=N(c||this.y||0)+i;h.width=N((d||this.width||0)-2*i);h.height=N((e||this.height||0)-2*i);h.strokeWidth=
a;for(f in h)this[f]!==h[f]&&(this[f]=g[f]=h[f]);return g},css:function(a){var b=this.element,c=this.textWidth=a&&a.width&&b.nodeName.toLowerCase()==="text"&&z(a.width),d,e="",f=function(a,b){return"-"+b.toLowerCase()};if(a&&a.color)a.fill=a.color;this.styles=a=r(this.styles,a);c&&delete a.width;if(ya&&!V)D(this.element,a);else{for(d in a)e+=d.replace(/([A-Z])/g,f)+":"+a[d]+";";v(b,"style",e)}c&&this.added&&this.renderer.buildText(this);return this},on:function(a,b){var c=this,d=c.element;ib&&a===
"click"?(d.ontouchstart=function(a){c.touchEventFired=Date.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(ra.indexOf("Android")===-1||Date.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||
0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(this.x||0)+" "+(this.y||0)+")");(t(c)||t(d))&&a.push("scale("+n(c,1)+" "+n(d,1)+")");a.length&&v(this.element,"transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=
a,this.alignByTranslate=b,!c||fa(c))this.alignTo=d=c||"renderer",ha(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=n(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=w(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=w(g);this[this.placed?"animate":"attr"](h);this.placed=
!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d,e=this.rotation;c=this.element;var f=this.styles,g=e*Ba;d=this.textStr;var h;if(d===""||Ob.test(d))h=d.length+"|"+f.fontSize+"|"+f.fontFamily,a=b.cache[h];if(!a){if(c.namespaceURI===Ca||b.forExport){try{a=c.getBBox?r({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(i){}if(!a||a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){c=a.width;d=a.height;if(ya&&f&&f.fontSize==="11px"&&
d.toPrecision(3)==="16.9")a.height=d=14;if(e)a.width=M(d*ba(g))+M(c*U(g)),a.height=M(d*U(g))+M(c*ba(g))}this.bBox=a;h&&(b.cache[h]=a)}return a},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.hide()}})},add:function(a){var b=this.renderer,c=a||b,d=c.element||b.box,e=d.childNodes,f=this.element,g=v(f,"zIndex"),h;if(a)this.parentGroup=a;this.parentInverted=
a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(g)c.handleZ=!0,g=z(g);if(c.handleZ)for(c=0;c<e.length;c++)if(a=e[c],b=v(a,"zIndex"),a!==f&&(z(b)>g||!t(g)&&t(b))){d.insertBefore(f,a);h=!0;break}h||d.appendChild(f);this.added=!0;A(this,"add");return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=
null;Za(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f<a.stops.length;f++)a.stops[f]=a.stops[f].destroy();a.stops=null}a.safeRemoveChild(b);for(c&&p(c,function(b){a.safeRemoveChild(b)});d&&d.div.childNodes.length===0;)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;a.alignTo&&ha(a.renderer.alignedObjects,a);for(e in a)delete a[e];return null},shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=n(a.width,3);j=(a.opacity||0.15)/i;k=this.parentInverted?
"(-1,-1)":"("+n(a.offsetX,1)+", "+n(a.offsetY,1)+")";for(e=1;e<=i;e++){f=g.cloneNode(0);h=i*2+1-2*e;v(f,{isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:Q});if(c)v(f,"height",s(v(f,"height")-h,0)),f.cutHeight=h;b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);d.push(f)}this.shadows=d}return this}};var ua=function(){this.init.apply(this,arguments)};ua.prototype={Element:pa,init:function(a,b,c,d){var e=location,f,g;f=this.createElement("svg").attr({version:"1.1"});
g=f.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&v(g,"xmlns",Ca);this.isSVG=!0;this.box=g;this.boxWrapper=f;this.alignedObjects=[];this.url=(Xa||hb)&&y.getElementsByTagName("base").length?e.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 3.0.9"));this.defs=this.createElement("defs").add();this.forExport=d;this.gradients={};this.cache={};this.setSize(b,c,!1);var h;
if(Xa&&a.getBoundingClientRect)this.subPixelFix=b=function(){D(a,{left:0,top:0});h=a.getBoundingClientRect();D(a,{left:Ha(h.left)-h.left+"px",top:Ha(h.top)-h.top+"px"})},b(),F(C,"resize",b)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Ma(this.gradients||{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&X(C,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=
new this.Element;b.init(this,a);return b},draw:function(){},buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=n(a.textStr,"").toString().replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(/<br.*?>/g),f=b.childNodes,g=/style="([^"]+)"/,h=/href="(http[^"]+)"/,i=v(b,"x"),j=a.styles,k=a.textWidth,l=j&&j.lineHeight,m=f.length,q=function(a){return l?z(l):
c.fontMetrics(/px$/.test(a&&a.style.fontSize)?a.style.fontSize:j.fontSize||11).h};m--;)b.removeChild(f[m]);k&&!a.added&&this.box.appendChild(b);e[e.length-1]===""&&e.pop();p(e,function(e,f){var l,m=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");l=e.split("|||");p(l,function(e){if(e!==""||l.length===1){var o={},n=y.createElementNS(Ca,"tspan"),p;g.test(e)&&(p=e.match(g)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),v(n,"style",p));h.test(e)&&!d&&(v(n,"onclick",'location.href="'+
e.match(h)[1]+'"'),D(n,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/&lt;/g,"<").replace(/&gt;/g,">");if(e!==" "&&(n.appendChild(y.createTextNode(e)),m?o.dx=0:o.x=i,v(n,o),!m&&f&&(!V&&d&&D(n,{display:"block"}),v(n,"dy",q(n),hb&&n.offsetHeight)),b.appendChild(n),m++,k))for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),o=e.length>1&&j.whiteSpace!=="nowrap",t,s,w=a._clipHeight,u=[],r=q(),$=1;o&&(e.length||u.length);)delete a.bBox,t=a.getBBox(),s=t.width,!V&&c.forExport&&(s=c.measureSpanWidth(n.firstChild.data,
a.styles)),t=s>k,!t||e.length===1?(e=u,u=[],e.length&&($++,w&&$*r>w?(e=["..."],a.attr("title",a.textStr)):(n=y.createElementNS(Ca,"tspan"),v(n,{dy:r,x:i}),p&&v(n,"style",p),b.appendChild(n),s>k&&(k=s)))):(n.removeChild(n.firstChild),u.unshift(e.pop())),e.length&&n.appendChild(y.createTextNode(e.join(" ").replace(/- /g,"-")))}})})},button:function(a,b,c,d,e,f,g,h,i){var j=this.label(a,b,c,i,null,null,null,null,"button"),k=0,l,m,q,o,n,p,a={x1:0,y1:0,x2:0,y2:1},e=x({"stroke-width":1,stroke:"#CCCCCC",
fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);q=e.style;delete e.style;f=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);o=f.style;delete f.style;g=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);n=g.style;delete g.style;h=x(e,{style:{color:"#CCC"}},h);p=h.style;delete h.style;F(j.element,ya?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(o)});F(j.element,ya?"mouseout":"mouseleave",
function(){k!==3&&(l=[e,f,g][k],m=[q,o,n][k],j.attr(l).css(m))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(n):a===3&&j.attr(h).css(p):j.attr(e).css(q)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(r({cursor:"default"},q))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=w(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=w(a[2])+b%2/2);return a},path:function(a){var b={fill:Q};Ka(a)?b.d=a:S(a)&&r(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=S(a)?a:{x:a,
y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(S(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){e=S(a)?a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:Q});return e.attr(S(a)?a:e.crisp(f,a,b,s(c,0),s(d,0)))},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[n(c,!0)?"animate":"attr"]({width:a,
height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return t(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:Q};arguments.length>1&&r(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(w(b),w(c),d,e,f),i=/^url\((.*?)\)$/,
j,k;if(h)g=this.path(h),r(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&r(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(w((d-b[0])/2),w((e-b[1])/2)))},j=a.match(i)[1],a=Jb[j],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),T("img",{onload:function(){k(g,Jb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/
2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=U(f),j=ba(f),k=U(g),g=ba(g),e=e.end-f<Aa?0:1;return["M",a+c*i,b+c*j,"A",c,c,0,e,
1,a+c*k,b+c*g,h?"M":"L",a+d*k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]}},clipRect:function(a,b,c,d){var e="highcharts-"+ub++,f=this.createElement("clipPath").attr({id:e}).add(this.defs),a=this.rect(a,b,c,d,0).add(f);a.id=e;a.clipPath=f;return a},color:function(a,b,c){var d=this,e,f=/^rgba/,g,h,i,j,k,l,m,q=[];a&&a.linearGradient?g="linearGradient":a&&a.radialGradient&&(g="radialGradient");if(g){c=a[g];h=d.gradients;j=a.stops;b=b.radialReference;Ka(c)&&(a[g]=c={x1:c[0],y1:c[1],x2:c[2],y2:c[3],gradientUnits:"userSpaceOnUse"});
g==="radialGradient"&&b&&!t(c.gradientUnits)&&(c=x(c,{cx:b[0]-b[2]/2+c.cx*b[2],cy:b[1]-b[2]/2+c.cy*b[2],r:c.r*b[2],gradientUnits:"userSpaceOnUse"}));for(m in c)m!=="id"&&q.push(m,c[m]);for(m in j)q.push(j[m]);q=q.join(",");h[q]?a=h[q].id:(c.id=a="highcharts-"+ub++,h[q]=i=d.createElement(g).attr(c).add(d.defs),i.stops=[],p(j,function(a){f.test(a[1])?(e=ta(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":k,"stop-opacity":l}).add(i);i.stops.push(a)}));
return"url("+d.url+"#"+a+")"}else return f.test(a)?(e=ta(a),v(b,c+"-opacity",e.get("a")),e.get("rgb")):(b.removeAttribute(c+"-opacity"),a)},text:function(a,b,c,d){var e=G.chart.style,f=da||!V&&this.forExport;if(d&&!this.forExport)return this.html(a,b,c);b=w(n(b,0));c=w(n(c,0));a=this.createElement("text").attr({x:b,y:c,text:a}).css({fontFamily:e.fontFamily,fontSize:e.fontSize});f&&a.css({position:"absolute"});a.x=b;a.y=c;return a},fontMetrics:function(a){var a=z(a||11),a=a<24?a+4:w(a*1.2),b=w(a*0.8);
return{h:a,b:b}},label:function(a,b,c,d,e,f,g,h,i){function j(){var a,b;a=n.element.style;va=(Z===void 0||Sa===void 0||o.styles.textAlign)&&n.getBBox();o.width=(Z||va.width||0)+2*ea+lb;o.height=(Sa||va.height||0)+2*ea;$=ea+q.fontMetrics(a&&a.fontSize).b;if(y){if(!H)a=w(-s*ea),b=h?-$:0,o.box=H=d?q.symbol(d,a,b,o.width,o.height,v):q.rect(a,b,o.width,o.height,0,v[Lb]),H.add(o);H.isImg||H.attr(x({width:o.width,height:o.height},v));v=null}}function k(){var a=o.styles,a=a&&a.textAlign,b=lb+ea*(1-s),c;c=
h?0:$;if(t(Z)&&(a==="center"||a==="right"))b+={center:0.5,right:1}[a]*(Z-va.width);(b!==n.x||c!==n.y)&&n.attr({x:b,y:c});n.x=b;n.y=c}function l(a,b){H?H.attr(a,b):v[a]=b}function m(){n.add(o);o.attr({text:a,x:b,y:c});H&&t(e)&&o.attr({anchorX:e,anchorY:f})}var q=this,o=q.g(i),n=q.text("",0,0,g).attr({zIndex:1}),H,va,s=0,ea=3,lb=0,Z,Sa,Ta,K,B=0,v={},$,g=o.attrSetters,y;F(o,"add",m);g.width=function(a){Z=a;return!1};g.height=function(a){Sa=a;return!1};g.padding=function(a){t(a)&&a!==ea&&(ea=a,k());return!1};
g.paddingLeft=function(a){t(a)&&a!==lb&&(lb=a,k());return!1};g.align=function(a){s={left:0,center:0.5,right:1}[a];return!1};g.text=function(a,b){n.attr(b,a);j();k();return!1};g[Lb]=function(a,b){y=!0;B=a%2/2;l(b,a);return!1};g.stroke=g.fill=g.r=function(a,b){b==="fill"&&(y=!0);l(b,a);return!1};g.anchorX=function(a,b){e=a;l(b,a+B-Ta);return!1};g.anchorY=function(a,b){f=a;l(b,a-K);return!1};g.x=function(a){o.x=a;a-=s*((Z||va.width)+ea);Ta=w(a);o.attr("translateX",Ta);return!1};g.y=function(a){K=o.y=
w(a);o.attr("translateY",K);return!1};var z=o.css;return r(o,{css:function(a){if(a){var b={},a=x(a);p("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(c){a[c]!==u&&(b[c]=a[c],delete a[c])});n.css(b)}return z.call(o,a)},getBBox:function(){return{width:va.width+2*ea,height:va.height+2*ea,x:va.x-ea,y:va.y-ea}},shadow:function(a){H&&H.shadow(a);return o},destroy:function(){X(o,"add",m);X(o.element,"mouseenter");X(o.element,"mouseleave");n&&(n=n.destroy());
H&&(H=H.destroy());pa.prototype.destroy.call(o);o=q=j=k=l=m=null}})}};Ya=ua;r(pa.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();this.styles=r(this.styles,a);D(this.element,a);return this},htmlGetBBox:function(){var a=this.element,b=this.bBox;if(!b){if(a.nodeName==="text")a.style.position="absolute";b=this.bBox={x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}}return b},htmlUpdateTransform:function(){if(this.added){var a=
this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={left:0,center:0.5,right:1}[g],i=this.shadows;D(b,{marginLeft:c,marginTop:d});i&&p(i,function(a){D(a,{marginLeft:c+1,marginTop:d+1})});this.inverted&&p(b.childNodes,function(c){a.invertChild(c,b)});if(b.tagName==="SPAN"){var j=this.rotation,k,l=z(this.textWidth),m=[j,g,b.innerHTML,this.textWidth].join(",");if(m!==this.cTT){k=a.fontMetrics(b.style.fontSize).b;t(j)&&this.setSpanRotation(j,
h,k);i=n(this.elemWidth,b.offsetWidth);if(i>l&&/[ \-]/.test(b.textContent||b.innerText))D(b,{width:l+"px",display:"block",whiteSpace:"normal"}),i=l;this.getSpanCorrection(i,k,h,j,g)}D(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(hb)k=b.offsetHeight;this.cTT=m}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=ya?"-ms-transform":hb?"-webkit-transform":Xa?"MozTransform":Hb?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";d[e+(Xa?"Origin":"-origin")]=b*100+"% "+
c+"px";D(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});r(ua.prototype,{html:function(a,b,c){var d=G.chart.style,e=this.createElement("span"),f=e.attrSetters,g=e.element,h=e.renderer;f.text=function(a){a!==g.innerHTML&&delete this.bBox;g.innerHTML=a;return!1};f.x=f.y=f.align=f.rotation=function(a,b){b==="align"&&(b="textAlign");e[b]=a;e.htmlUpdateTransform();return!1};e.attr({text:a,x:w(b),y:w(c)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:d.fontFamily,
fontSize:d.fontSize});e.css=e.htmlCss;if(h.isSVG)e.add=function(a){var b,c=h.box.parentNode,d=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)d.push(a),a=a.parentGroup;p(d.reverse(),function(a){var d;b=a.div=a.div||T(Ga,{className:v(a.element,"class")},{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;r(a.attrSetters,{translateX:function(a){d.left=a+"px"},translateY:function(a){d.top=a+"px"},visibility:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(g);
e.added=!0;e.alignOnAdd&&e.htmlUpdateTransform();return e};return e}});var R;if(!V&&!da){Highcharts.VMLElement=R={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",";"],e=b===Ga;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=T(c);this.renderer=a;this.attrSetters={}},add:function(a){var b=this.renderer,
c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();A(this,"add");return this},updateTransform:pa.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=U(a*Ba),c=ba(a*Ba);D(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):Q})},getSpanCorrection:function(a,
b,c,d,e){var f=d?U(d*Ba):1,g=d?ba(d*Ba):0,h=n(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),D(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(wa(a[b]))c[b]=w(a[b]*10)-5;else if(a[b]==="Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?
1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},attr:function(a,b){var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,k,l=this.shadows,m,q=this.attrSetters,o=this;fa(a)&&t(b)&&(c=a,a={},a[c]=b);if(fa(a))c=a,o=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c];else for(c in a)if(d=a[c],m=!1,e=q[c]&&q[c].call(this,d,c),e!==!1&&d!==null){e!==u&&(d=e);if(j&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(c))k||
(this.symbolAttr(a),k=!0),m=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");f.path=d=this.pathToVML(d);if(l)for(e=l.length;e--;)l[e].path=l[e].cutOff?this.cutOffPath(d,l[e].cutOff):d;m=!0}else if(c==="visibility"){if(l)for(e=l.length;e--;)l[e].style[c]=d;h==="DIV"&&(d=d==="hidden"?"-999em":0,gb||(g[c]=d?"visible":"hidden"),c="top");g[c]=d;m=!0}else if(c==="zIndex")d&&(g[c]=d),m=!0;else if(sa(c,["x","y","width","height"])!==-1)this[c]=d,c==="x"||c==="y"?c={x:"left",y:"top"}[c]:d=s(0,d),this.updateClipping?
(this[c]=d,this.updateClipping()):g[c]=d,m=!0;else if(c==="class"&&h==="DIV")f.className=d;else if(c==="stroke")d=i.color(d,f,c),c="strokecolor";else if(c==="stroke-width"||c==="strokeWidth")f.stroked=d?!0:!1,c="strokeweight",this[c]=d,wa(d)&&(d+="px");else if(c==="dashstyle")(f.getElementsByTagName("stroke")[0]||T(i.prepVML(["<stroke/>"]),null,null,f))[c]=d||"solid",this.dashstyle=d,m=!0;else if(c==="fill")if(h==="SPAN")g.color=d;else{if(h!=="IMG")f.filled=d!==Q?!0:!1,d=i.color(d,f,c,this),c="fillcolor"}else if(c===
"opacity")m=!0;else if(h==="shape"&&c==="rotation")this[c]=f.style[c]=d,f.style.left=-w(ba(d*Ba)+1)+"px",f.style.top=w(U(d*Ba))+"px";else if(c==="translateX"||c==="translateY"||c==="rotation")this[c]=d,this.updateTransform(),m=!0;m||(gb?f[c]=d:v(f,c,d))}return o},clip:function(a){var b=this,c;a?(c=a.members,ha(c,b),c.push(b),b.destroyClip=function(){ha(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:gb?"inherit":"rect(auto)"});return b.css(a)},css:pa.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&
Na(a)},destroy:function(){this.destroyClip&&this.destroyClip();return pa.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=C.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=z(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,q,o;k&&typeof k.value!=="string"&&(k="x");m=k;if(a){q=n(a.width,3);o=(a.opacity||
0.15)/q;for(e=1;e<=3;e++){l=q*2+1-2*e;c&&(m=this.cutOffPath(k.value,l+0.5));j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',m,'" coordsize="10 10" style="',f.style.cssText,'" />'];h=T(g.prepVML(j),null,{left:z(i.left)+n(a.offsetX,1),top:z(i.top)+n(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" opacity="',o*e,'"/>'];T(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this}};R=ia(pa,R);
var xb={Element:R,isIE8:ra.indexOf("MSIE 8.0")>-1,init:function(a,b,c){var d,e;this.alignedObjects=[];d=this.createElement(Ga);e=d.element;e.style.position="relative";a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!y.namespaces.hcv){y.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{y.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){y.styleSheets[0].cssText+=
"hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=S(a);return r(e,{members:[],left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+w(a?e:d)+"px,"+w(a?f:
b)+"px,"+w(a?b:f)+"px,"+w(a?d:e)+"px)"};!a&&gb&&c==="DIV"&&r(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){p(e.members,function(a){a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=Q;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,m=a.linearGradient||a.radialGradient,q,o,n,H,s,t="",a=a.stops,u,w=[],r=function(){h=['<fill colors="'+w.join(",")+'" opacity="',n,'" o:opacity2="',o,'" type="',i,'" ',t,'focus="100%" method="any" />'];
T(e.prepVML(h),null,null,b)};q=a[0];u=a[a.length-1];q[0]>0&&a.unshift([0,q[1]]);u[0]<1&&a.push([1,u[1]]);p(a,function(a,b){g.test(a[1])?(f=ta(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);w.push(a[0]*100+"% "+k);b?(n=l,H=k):(o=l,s=k)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,q=m.x2||m[2]||0,m=m.y2||m[3]||0,t='angle="'+(90-P.atan((m-a)/(q-c))*180/Aa)+'"',r();else{var j=m.r,Sa=j*2,Ta=j*2,v=m.cx,B=m.cy,x=b.radialReference,$,j=function(){x&&($=d.getBBox(),v+=(x[0]-$.x)/$.width-
0.5,B+=(x[1]-$.y)/$.height-0.5,Sa*=x[2]/$.width,Ta*=x[2]/$.height);t='src="'+G.global.VMLRadialGradientURL+'" size="'+Sa+","+Ta+'" origin="0.5,0.5" position="'+v+","+B+'" color2="'+s+'" ';r()};d.added?j():F(d,"add",j);j=H}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=ta(a),h=["<",c,' opacity="',f.get("a"),'"/>'],T(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");
b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","<hcv:");return a},text:ua.prototype.html,path:function(a){var b={coordsize:"10 10"};Ka(a)?b.d=a:S(a)&&r(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var d=this.symbol("circle");if(S(a))c=a.r,b=a.y,a=a.x;d.isCircle=
!0;d.r=c;return d.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement(Ga).attr(b)},image:function(a,b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.attr({x:b,y:c,width:d,height:e});return f},rect:function(a,b,c,d,e,f){var g=this.symbol("rect");g.r=S(a)?a.r:e;return g.attr(S(a)?a:g.crisp(f,a,b,s(c,0),s(d,0)))},invertChild:function(a,b){var c=b.style;D(a,{flip:"x",left:z(c.width)-1,top:z(c.height)-1,rotation:-90})},
symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=U(f),i=ba(f),j=U(g),k=ba(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){var f=a+c,g=b+d,h;!t(e)||!e.r?f=ua.prototype.symbols.square.apply(0,
arguments):(h=I(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b+h,"L",f,g-h,"wa",f-2*h,g-2*h,f,g,f,g-h,f-h,g,"L",a+h,g,"wa",a,g-2*h,a+2*h,g,a+h,g,a,g-h,"L",a,b+h,"wa",a,b,a+2*h,b+2*h,a,b+h,a+h,b,"x","e"]);return f}}};Highcharts.VMLRenderer=R=function(){this.init.apply(this,arguments)};R.prototype=x(ua.prototype,xb);Ya=R}ua.prototype.measureSpanWidth=function(a,b){var c=y.createElement("span"),d;d=y.createTextNode(a);c.appendChild(d);D(c,b);this.box.appendChild(c);d=c.offsetWidth;Na(c);
return d};var Mb;if(da)Highcharts.CanVGRenderer=R=function(){Ca="http://www.w3.org/1999/xhtml"},R.prototype.symbols={},Mb=function(){function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}var b=[];return{push:function(c,d){b.length===0&&Pb(d,a);b.push(c)}}}(),Ya=R;Qa.prototype={addLabel:function(){var a=this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,h=b.labels,i=a.tickPositions,d=d&&e&&!h.step&&!h.staggerLines&&!h.rotation&&c.plotWidth/i.length||!d&&(c.margin[3]||
c.chartWidth*0.33),j=g===i[0],k=g===i[i.length-1],l,f=e?n(e[g],f[g],g):g,e=this.label,m=i.info;a.isDatetimeAxis&&m&&(l=b.dateTimeLabelFormats[m.higherRanks[g]||m.unitName]);this.isFirst=j;this.isLast=k;b=a.labelFormatter.call({axis:a,chart:c,isFirst:j,isLast:k,dateTimeLabelFormat:l,value:a.isLog?aa(ga(f)):f});g=d&&{width:s(1,w(d-2*(h.padding||10)))+"px"};g=r(g,h.style);if(t(e))e&&e.attr({text:b}).css(g);else{l={align:a.labelAlign};if(wa(h.rotation))l.rotation=h.rotation;if(d&&h.ellipsis)l._clipHeight=
a.len/i.length;this.label=t(b)&&h.enabled?c.renderer.text(b,0,0,h.useHTML).attr(l).css(g).add(a.labelGroup):null}},getLabelSize:function(){var a=this.label,b=this.axis;return a?a.getBBox()[b.horiz?"height":"width"]:0},getLabelSides:function(){var a=this.label.getBBox(),b=this.axis,c=b.horiz,d=b.options.labels,a=c?a.width:a.height,b=c?a*{left:0,center:0.5,right:1}[b.labelAlign]-d.x:a;return[-b,a-b]},handleOverflow:function(a,b){var B;var c=!0,d=this.axis,e=this.isFirst,f=this.isLast,g=d.horiz?b.x:
b.y,h=d.reversed,i=d.tickPositions,j=this.getLabelSides(),k=j[0],j=j[1],l=d.pos,m=l+d.len,q=this.label.line||0,o=d.labelEdge,n=d.justifyLabels&&(e||f);o[q]===u||g+k>o[q]?o[q]=g+j:n||(c=!1);if(n)B=(d=d.ticks[i[a+(e?1:-1)]])&&d.label.xy&&d.label.xy.x+d.getLabelSides()[e?0:1],i=B,e&&!h||f&&h?g+k<l&&(g=l-k,d&&g+j>i&&(c=!1)):g+j>m&&(g=m-j,d&&g+k<i&&(c=!1)),b.x=g;return c},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+
e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,m=i.chart.renderer.fontMetrics(e.style.fontSize).b,q=e.rotation,a=a+e.x-(f&&d?f*j*(k?-1:1):0),b=b+e.y-(f&&!d?f*j*(k?1:-1):0);q&&i.side===2&&(b-=m-m*U(q*Ba));!t(e.y)&&!q&&(b+=m-c.getBBox().height/2);if(l)c.line=g/(h||1)%l,
b+=c.line*(i.labelOffset/l);return{x:a,y:b}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,m=h?h+"Grid":"grid",q=h?h+"Tick":"tick",o=e[m+"LineWidth"],p=e[m+"LineColor"],H=e[m+"LineDashStyle"],s=e[q+"Length"],m=e[q+"Width"]||0,t=e[q+"Color"],w=e[q+"Position"],q=this.mark,r=k.step,Z=!0,x=d.tickmarkOffset,v=this.getPosition(g,
j,x,b),y=v.x,v=v.y,B=g&&y===d.pos+d.len||!g&&v===d.pos?-1:1;this.isActive=!0;if(o){j=d.getPlotLinePath(j+x,o*B,b,!0);if(l===u){l={stroke:p,"stroke-width":o};if(H)l.dashstyle=H;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=o?f.path(j).attr(l).add(d.gridGroup):null}if(!b&&l&&j)l[this.isNew?"attr":"animate"]({d:j,opacity:c})}if(m&&s)w==="inside"&&(s=-s),d.opposite&&(s=-s),h=this.getMarkPath(y,v,s,m*B,g,f),q?q.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:t,"stroke-width":m,opacity:c}).add(d.axisGroup);
if(i&&!isNaN(y))i.xy=v=this.getLabelPosition(y,v,i,g,k,x,a,r),this.isFirst&&!this.isLast&&!n(e.showFirstLabel,1)||this.isLast&&!this.isFirst&&!n(e.showLastLabel,1)?Z=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(Z=this.handleOverflow(a,v)),r&&a%r&&(Z=!1),Z&&!isNaN(v.y)?(v.opacity=c,i[this.isNew?"attr":"animate"](v),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Ma(this,this.axis)}};var yb=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};yb.prototype={render:function(){var a=this,
b=a.axis,c=b.horiz,d=(b.pointRange||0)/2,e=a.options,f=e.label,g=a.label,h=e.width,i=e.to,j=e.from,k=t(j)&&t(i),l=e.value,m=e.dashStyle,q=a.svgElem,o=[],p,H=e.color,w=e.zIndex,r=e.events,u=b.chart.renderer;b.isLog&&(j=xa(j),i=xa(i),l=xa(l));if(h){if(o=b.getPlotLinePath(l,h),d={stroke:H,"stroke-width":h},m)d.dashstyle=m}else if(k){if(j=s(j,b.min-d),i=I(i,b.max+d),o=b.getPlotBandPath(j,i,e),d={fill:H},e.borderWidth)d.stroke=e.borderColor,d["stroke-width"]=e.borderWidth}else return;if(t(w))d.zIndex=
w;if(q)if(o)q.animate({d:o},null,q.onGetPath);else{if(q.hide(),q.onGetPath=function(){q.show()},g)a.label=g=g.destroy()}else if(o&&o.length&&(a.svgElem=q=u.path(o).attr(d).add(),r))for(p in e=function(b){q.on(b,function(c){r[b].apply(a,[c])})},r)e(p);if(f&&t(f.text)&&o&&o.length&&b.width>0&&b.height>0){f=x({align:c&&k&&"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g)a.label=g=u.text(f.text,0,0,f.useHTML).attr({align:f.textAlign||f.align,rotation:f.rotation,
zIndex:w}).css(f.style).add();b=[o[1],o[4],n(o[6],o[1])];o=[o[2],o[5],n(o[7],o[2])];c=La(b);k=La(o);g.align(f,!1,{x:c,y:k,width:za(b)-c,height:za(o)-k});g.show()}else g&&g.hide();return a},destroy:function(){ha(this.axis.plotLinesAndBands,this);delete this.axis;Ma(this)}};qa.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:J,lineColor:"#C0D0E0",
lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e",fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,
maxPadding:0.05,minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return Da(this.total,-1)},style:J.style}},defaultLeftAxisOptions:{labels:{x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:8,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-5},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=
(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=[];this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=t(d.linkedTo);
this.tickmarkOffset=this.categories&&d.tickmarkPlacement==="between"?0.5:0;this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stackExtremes={};this.min=this.max=null;this.crosshair=n(d.crosshair,ja(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;sa(this,a.axes)===-1&&(a.axes.push(this),
a[this.coll].push(this));this.series=this.series||[];if(a.inverted&&c&&this.reversed===u)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)F(this,f,d[f]);if(this.isLog)this.val2lin=xa,this.lin2val=ga},setOptions:function(a){this.options=x(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],x(G[this.coll],a))},defaultLabelFormatter:function(){var a=
this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=G.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Fa(h,this);else if(c)g=b;else if(d)g=ab(d,b);else if(f&&a>=1E3)for(;f--&&g===u;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=Da(b/c,-1)+e[f]);g===u&&(g=b>=1E4?Da(b,0):Da(b,-1,u,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;a.stackExtremes={};a.buildStacks();p(a.series,function(c){if(c.visible||
!b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=I(n(a.dataMin,d[0]),La(d)),a.dataMax=s(n(a.dataMax,d[0]),za(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(t(c)&&t(e))a.dataMin=I(n(a.dataMin,c),c),a.dataMax=s(n(a.dataMax,e),e);if(t(d))if(a.dataMin>=d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g=
this.len,h=1,i=0,j=d?this.oldTransA:this.transA,d=d?this.oldMin:this.min,k=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.lin2val;if(!j)j=this.transA;c&&(h*=-1,i=g);this.reversed&&(h*=-1,i-=h*g);b?(a=a*h+i,a-=k,a=a/j+d,e&&(a=this.lin2val(a))):(e&&(a=this.val2lin(a)),f==="between"&&(f=0.5),a=h*(a-d)*j+i+h*k+(wa(f)?j*f*this.pointRange:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-
(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,m;i=this.transB;e=n(e,this.translate(a,null,null,c));a=c=w(e+i);i=j=w(k-e-i);if(isNaN(e))m=!0;else if(this.horiz){if(i=h,j=k-this.bottom,a<g||a>g+this.width)m=!0}else if(a=g,c=l-this.right,i<h||i>h+this.height)m=!0;return m&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,
b,c){for(var d,b=aa(N(b/a)*a),c=aa(Ha(c/a)*a),e=[];b<=c;){e.push(b);b=aa(b+a);if(b===d)break;d=b}return e},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length;for(a=1;a<e;a++)d=d.concat(this.getLogTickPositions(c,b[a-1],b[a],!0))}else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),this.min,this.max,a.startOfWeek)),d[0]<this.min&&d.shift();else for(b=this.min+
(b[0]-this.min)%c;b<=this.max;b+=c)d.push(b);return d},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===u&&!this.isLog)t(a.min)||t(a.max)?this.minRange=null:(p(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===u||h<f)f=h}),this.minRange=I(f*5,this.dataMax-this.dataMin));if(c-b<this.minRange){var k=this.minRange;d=(k-c+b)/2;d=[b-d,n(a.min,b-d)];
if(e)d[2]=this.dataMin;b=za(d);c=[b+k,n(a.max,b+k)];if(e)c[2]=this.dataMax;c=La(c);c-b<k&&(d[0]=c-k,d[1]=n(a.min,c-k),b=za(d))}this.min=b;this.max=c},setAxisTranslation:function(a){var b=this.max-this.min,c=0,d,e=0,f=0,g=this.linkedParent,h=!!this.categories,i=this.transA;if(this.isXAxis||h)g?(e=g.minPointOffset,f=g.pointRangePadding):p(this.series,function(a){var g=s(a.pointRange,+h),i=a.options.pointPlacement,m=a.closestPointRange;g>b&&(g=0);c=s(c,g);e=s(e,fa(i)?0:g/2);f=s(f,i==="on"?0:g);!a.noSharedTooltip&&
t(m)&&(d=t(d)?I(d,m):m)}),g=this.ordinalSlope&&d?this.ordinalSlope/d:1,this.minPointOffset=e*=g,this.pointRangePadding=f*=g,this.pointRange=I(c,b),this.closestPointRange=d;if(a)this.oldTransA=i;this.translationSlope=this.transA=i=this.len/(b+f||1);this.transB=this.horiz?this.left:this.bottom;this.minPixelPadding=i*e},setTickPositions:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,k=d.minPadding,l=d.tickInterval,
m=d.minTickInterval,q=d.tickPixelInterval,o,ma=b.categories;h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=n(c.min,c.dataMin),b.max=n(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&ka(11,1)):(b.min=n(b.userMin,d.min,b.dataMin),b.max=n(b.userMax,d.max,b.dataMax));if(e)!a&&I(b.min,n(b.dataMin,b.min))<=0&&ka(10,1),b.min=aa(xa(b.min)),b.max=aa(xa(b.max));if(b.range&&t(b.max))b.userMin=b.min=s(b.min,b.max-b.range),b.userMax=b.max,b.range=null;b.beforePadding&&b.beforePadding();
b.adjustForMinRange();if(!ma&&!b.usePercentage&&!h&&t(b.min)&&t(b.max)&&(c=b.max-b.min)){if(!t(d.min)&&!t(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;if(!t(d.max)&&!t(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}b.min===b.max||b.min===void 0||b.max===void 0?b.tickInterval=1:h&&!l&&q===b.linkedParent.options.tickPixelInterval?b.tickInterval=b.linkedParent.tickInterval:(b.tickInterval=n(l,ma?1:(b.max-b.min)*q/s(b.len,q)),!t(l)&&b.len<q&&!this.isRadial&&!ma&&d.startOnTick&&
d.endOnTick&&(o=!0,b.tickInterval/=4));g&&!a&&p(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);if(b.pointRange)b.tickInterval=s(b.pointRange,b.tickInterval);if(!l&&b.tickInterval<m)b.tickInterval=m;if(!f&&!e&&!l)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),d);b.minorTickInterval=d.minorTickInterval===
"auto"&&b.tickInterval?b.tickInterval/5:d.minorTickInterval;b.tickPositions=a=d.tickPositions?[].concat(d.tickPositions):i&&i.apply(b,[b.min,b.max]);if(!a)!b.ordinalPositions&&(b.max-b.min)/b.tickInterval>s(2*b.len,200)&&ka(19,!0),a=f?b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval,d.units),b.min,b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,!0):e?b.getLogTickPositions(b.tickInterval,b.min,b.max):b.getLinearTickPositions(b.tickInterval,b.min,b.max),o&&a.splice(1,a.length-2),
b.tickPositions=a;if(!h)e=a[0],f=a[a.length-1],h=b.minPointOffset||0,d.startOnTick?b.min=e:b.min-h>e&&a.shift(),d.endOnTick?b.max=f:b.max+h<f&&a.pop(),a.length===1&&(b.min-=0.001,b.max+=0.001)},setMaxTicks:function(){var a=this.chart,b=a.maxTicks||{},c=this.tickPositions,d=this._maxTicksKey=[this.coll,this.pos,this.len].join("-");if(!this.isLinked&&!this.isDatetimeAxis&&c&&c.length>(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,
b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==u){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e<a){for(;b.length<a;)b.push(aa(b[b.length-1]+this.tickInterval));this.transA*=(e-1)/(a-1);this.max=b[b.length-1]}if(t(d)&&a!==d)this.isDirty=!0}},setScale:function(){var a=this.stacks,b,c,d,e;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();e=this.len!==
this.oldAxisLength;p(this.series,function(a){if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0});if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;this.forceRedraw=!1;this.getSeriesExtremes();this.setTickPositions();this.oldUserMin=this.userMin;this.oldUserMax=this.userMax;if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}else if(!this.isXAxis){if(this.oldStacks)a=
this.stacks=this.oldStacks;for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}this.setMaxTicks()},setExtremes:function(a,b,c,d,e){var f=this,g=f.chart,c=n(c,!0),e=r(e,{min:a,max:b});A(f,"setExtremes",e,function(){f.userMin=a;f.userMax=b;f.eventArgs=e;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){this.allowZoomOutside||(t(this.dataMin)&&a<=this.dataMin&&(a=u),t(this.dataMax)&&b>=this.dataMax&&(b=u));this.displayBtn=a!==u||b!==u;this.setExtremes(a,b,!1,u,{trigger:"zoom"});return!0},setAxisSize:function(){var a=
this.chart,b=this.options,c=b.offsetLeft||0,d=b.offsetRight||0,e=this.horiz,f,g;this.left=g=n(b.left,a.plotLeft+c);this.top=f=n(b.top,a.plotTop);this.width=c=n(b.width,a.plotWidth-c+d);this.height=b=n(b.height,a.plotHeight);this.bottom=a.chartHeight-b-f;this.right=a.chartWidth-c-g;this.len=s(e?c:b,0);this.pos=e?g:f},getExtremes:function(){var a=this.isLog;return{min:a?aa(ga(this.min)):this.min,max:a?aa(ga(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},
getThreshold:function(a){var b=this.isLog,c=b?ga(this.min):this.min,b=b?ga(this.max):this.max;c>a||a===null?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=(n(a,0)-this.side*90+720)%360;return a>15&&a<165?"right":a>195&&a<345?"left":"center"},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,m=0,q=d.title,o=d.labels,ma=0,H=b.axisOffset,w=b.clipOffset,r=[-1,1,1,-1][h],v,
x=1,Z=n(o.maxStaggerLines,5),y,z,K,B;a.hasData=j=a.hasVisibleSeries||t(a.min)&&t(a.max)&&!!e;a.showAxis=b=j||n(d.showEmpty,!0);a.staggerLines=a.horiz&&o.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:o.zIndex||7}).add();if(j||a.isLinked){a.labelAlign=n(o.align||a.autoLabelAlign(o.rotation));p(e,function(b){f[b]?f[b].addLabel():f[b]=new Qa(a,b)});if(a.horiz&&
!a.staggerLines&&Z&&!o.rotation){for(v=a.reversed?[].concat(e).reverse():e;x<Z;){j=[];y=!1;for(o=0;o<v.length;o++)z=v[o],K=(K=f[z].label&&f[z].label.getBBox())?K.width:0,B=o%x,K&&(z=a.translate(z),j[B]!==u&&z<j[B]&&(y=!0),j[B]=z+K);if(y)x++;else break}if(x>1)a.staggerLines=x}p(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign)ma=s(f[b].getLabelSize(),ma)});if(a.staggerLines)ma*=a.staggerLines,a.labelOffset=ma}else for(v in f)f[v].destroy(),delete f[v];if(q&&q.text&&q.enabled!==
!1){if(!a.axisTitle)a.axisTitle=c.text(q.text,0,0,q.useHTML).attr({zIndex:7,rotation:q.rotation||0,align:q.textAlign||{low:"left",middle:"center",high:"right"}[q.align]}).css(q.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(b)k=a.axisTitle.getBBox()[g?"height":"width"],m=n(q.margin,g?5:10),l=q.offset;a.axisTitle[b?"show":"hide"]()}a.offset=r*n(d.offset,H[h]);a.axisTitleMargin=n(l,ma+m+(h!==2&&ma&&r*d.labels[g?"y":"x"]));H[h]=s(H[h],a.axisTitleMargin+k+r*a.offset);w[i]=s(w[i],N(d.lineWidth/2)*2)},
getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=z(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+
(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?i:0);return{x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}},render:function(){var a=this,b=a.horiz,c=a.reversed,d=a.chart,e=d.renderer,f=a.options,g=a.isLog,h=a.isLinked,i=a.tickPositions,j,k=a.axisTitle,l=a.stacks,m=a.ticks,q=a.minorTicks,o=a.alternateBands,n=f.stackLabels,H=f.alternateGridColor,s=a.tickmarkOffset,r=f.lineWidth,w=d.hasRendered&&t(a.oldMin)&&!isNaN(a.oldMin),v=
a.hasData,x=a.showAxis,y,z=a.justifyLabels=!a.staggerLines&&b&&f.labels.overflow==="justify",K;a.labelEdge.length=0;p([m,q,o],function(a){for(var b in a)a[b].isActive=!1});if(v||h)if(a.minorTickInterval&&!a.categories&&p(a.getMinorTickPositions(),function(b){q[b]||(q[b]=new Qa(a,b,"minor"));w&&q[b].isNew&&q[b].render(null,!0);q[b].render(null,!1,1)}),i.length&&(j=i.slice(),(b&&c||!b&&!c)&&j.reverse(),z&&(j=j.slice(1).concat([j[0]])),p(j,function(b,c){z&&(c=c===j.length-1?0:c+1);if(!h||b>=a.min&&b<=
a.max)m[b]||(m[b]=new Qa(a,b)),w&&m[b].isNew&&m[b].render(c,!0,0.1),m[b].render(c,!1,1)}),s&&a.min===0&&(m[-1]||(m[-1]=new Qa(a,-1,null,!0)),m[-1].render(-1))),H&&p(i,function(b,c){if(c%2===0&&b<a.max)o[b]||(o[b]=new yb(a)),y=b+s,K=i[c+1]!==u?i[c+1]+s:a.max,o[b].options={from:g?ga(y):y,to:g?ga(K):K,color:H},o[b].render(),o[b].isActive=!0}),!a._addedPlotLB)p((f.plotLines||[]).concat(f.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0;p([m,q,o],function(a){var b,c,e=[],f=oa?oa.duration||
500:0,g=function(){for(c=e.length;c--;)a[e[c]]&&!a[e[c]].isActive&&(a[e[c]].destroy(),delete a[e[c]])};for(b in a)if(!a[b].isActive)a[b].render(b,!1,0),a[b].isActive=!1,e.push(b);a===o||!d.hasRendered||!f?g():f&&setTimeout(g,f)});if(r)b=a.getLinePath(r),a.axisLine?a.axisLine.animate({d:b}):a.axisLine=e.path(b).attr({stroke:f.lineColor,"stroke-width":r,zIndex:7}).add(a.axisGroup),a.axisLine[x?"show":"hide"]();if(k&&x)k[k.isNew?"attr":"animate"](a.getTitlePosition()),k.isNew=!1;if(n&&n.enabled){var B,
A,f=a.stackTotalGroup;if(!f)a.stackTotalGroup=f=e.g("stack-labels").attr({visibility:"visible",zIndex:6}).add();f.translate(d.plotLeft,d.plotTop);for(B in l)for(A in e=l[B],e)e[A].render(f)}a.isDirty=!1},redraw:function(){var a=this.chart.pointer;a.reset&&a.reset(!0);this.render();p(this.plotLinesAndBands,function(a){a.render()});p(this.series,function(a){a.isDirty=!0})},buildStacks:function(){var a=this.series,b=a.length;if(!this.isXAxis){for(;b--;)a[b].setStackedPoints();if(this.usePercentage)for(b=
0;b<a.length;b++)a[b].setPercentStacks()}},destroy:function(a){var b=this,c=b.stacks,d,e=b.plotLinesAndBands;a||X(b);for(d in c)Ma(c[d]),c[d]=null;p([b.ticks,b.minorTicks,b.alternateBands],function(a){Ma(a)});for(a=e.length;a--;)e[a].destroy();p("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),function(a){b[a]&&(b[a]=b[a].destroy())});this.cross&&this.cross.destroy()},drawCrosshair:function(a,b){if(this.crosshair)if((t(b)||!n(this.crosshair.snap,!0))===!1)this.hideCrosshair();
else{var c,d=this.crosshair,e=d.animation;n(d.snap,!0)?t(b)&&(c=this.chart.inverted!=this.horiz?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos;c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:n(b.stackY,b.y)):this.getPlotLinePath(null,null,null,null,c);if(c===null)this.hideCrosshair();else if(this.cross)this.cross.attr({visibility:"visible"})[e?"animate":"attr"]({d:c},e);else{e={"stroke-width":d.width||1,stroke:d.color||"#C0C0C0",zIndex:d.zIndex||2};if(d.dashStyle)e.dashstyle=
d.dashStyle;this.cross=this.chart.renderer.path(c).attr(e).add()}}},hideCrosshair:function(){this.cross&&this.cross.hide()}};r(qa.prototype,{getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);d&&c?d.push(c[4],c[5],c[1],c[2]):d=null;return d},addPlotBand:function(a){this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){this.addPlotBandOrLine(a,"plotLines")},addPlotBandOrLine:function(a,b){var c=(new yb(this,a)).render(),d=this.userOptions;c&&(b&&(d[b]=d[b]||
[],d[b].push(a)),this.plotLinesAndBands.push(c));return c},removePlotBandOrLine:function(a){for(var b=this.plotLinesAndBands,c=this.options,d=this.userOptions,e=b.length;e--;)b[e].id===a&&b[e].destroy();p([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){for(e=b.length;e--;)b[e].id===a&&ha(b,b[e])})}});qa.prototype.getLogTickPositions=function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=w(a),g=this.getLinearTickPositions(a,
b,c);else if(a>=0.08)for(var f=N(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];f<c+1&&!l;f++){i=e.length;for(h=0;h<i&&!l;h++)j=xa(ga(f)*e[h]),j>b&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}else if(b=ga(b),c=ga(c),a=e[d?"minorTickInterval":"tickInterval"],a=n(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=nb(a,null,mb(a)),g=Ra(this.getLinearTickPositions(a,b,c),xa),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=
a;return g};qa.prototype.getTimeTicks=function(a,b,c,d){var e=[],f={},g=G.global.useUTC,h,i=new Date(b-Pa),j=a.unitRange,k=a.count;if(t(b)){j>=E.second&&(i.setMilliseconds(0),i.setSeconds(j>=E.minute?0:k*N(i.getSeconds()/k)));if(j>=E.minute)i[Cb](j>=E.hour?0:k*N(i[pb]()/k));if(j>=E.hour)i[Db](j>=E.day?0:k*N(i[qb]()/k));if(j>=E.day)i[sb](j>=E.month?1:k*N(i[Wa]()/k));j>=E.month&&(i[Eb](j>=E.year?0:k*N(i[db]()/k)),h=i[eb]());j>=E.year&&(h-=h%k,i[Fb](h));if(j===E.week)i[sb](i[Wa]()-i[rb]()+n(d,1));b=
1;Pa&&(i=new Date(i.getTime()+Pa));h=i[eb]();for(var d=i.getTime(),l=i[db](),m=i[Wa](),q=g?Pa:(864E5+i.getTimezoneOffset()*6E4)%864E5;d<c;)e.push(d),j===E.year?d=cb(h+b*k,0):j===E.month?d=cb(h,l+b*k):!g&&(j===E.day||j===E.week)?d=cb(h,l,m+b*k*(j===E.day?1:7)):d+=j*k,b++;e.push(d);p(wb(e,function(a){return j<=E.hour&&a%E.day===q}),function(a){f[a]="day"})}e.info=r(a,{higherRanks:f,totalRange:j*k});return e};qa.prototype.normalizeTimeTickInterval=function(a,b){var c=b||[["millisecond",[1,2,5,10,20,
25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=E[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=E[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+E[c[g+1][0]])/2)break;e===E.year&&a<5*e&&(f=[1,2,5]);c=nb(a/e,f,d[0]==="year"?s(mb(a/e),1):1);return{unitRange:e,count:c,unitName:d[0]}};Gb.prototype={destroy:function(){Ma(this,this.axis)},render:function(a){var b=this.options,
c=b.format,c=c?Fa(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,0,0,b.useHTML).css(b.style).attr({align:this.textAlign,rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted,f=this.isNegative,g=c.translate(this.percent?100:this.total,0,0,0,1),c=c.translate(0),c=M(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?
c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e.attr({visibility:this.options.crop===!1||d.isInsidePlot(f.x,f.y)?V?"inherit":"visible":"hidden"})}};tb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=z(d.padding);this.chart=a;this.options=b;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.label=a.renderer.label("",0,0,b.shape,null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-999});
da||this.label.shadow(b.shadow);this.shared=b.shared},destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==!1&&!e.isHidden;r(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:g?(2*f.anchorX+c)/3:c,anchorY:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g&&(M(a-f.x)>1||M(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,
c,d)},32)},hide:function(){var a=this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},n(this.options.hideDelay,500)),b&&p(b,function(a){a.setState()}),this.chart.hoverPoints=null},getAnchor:function(a,b){var c,d=this.chart,e=d.inverted,f=d.plotTop,g=0,h=0,i,a=ja(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===u&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(p(a,function(a){i=
a.series.yAxis;g+=a.plotX;h+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return Ra(c,w)},getPosition:function(a,b,c){var d=this.chart,e=d.plotLeft,f=d.plotTop,g=d.plotWidth,h=d.plotHeight,i=n(this.options.distance,12),j=c.plotX,c=c.plotY,d=j+e+(d.inverted?i:-a-i),k=c-b+f+15,l;d<7&&(d=e+s(j,0)+i);d+a>e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);k<f+5&&(k=f+5,l&&c>=k&&c<=k+b&&(k=c+
f+i));k+b>f+h&&(k=s(f,f+h-b-i));return{x:d,y:k}},defaultFormatter:function(a){var b=this.points||ja(this),c=b[0].series,d;d=[c.tooltipHeaderFormatter(b[0])];p(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});d.push(a.options.footerFormat||"");return d.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h={},i,j=[];i=e.formatter||this.defaultFormatter;var h=c.hoverPoints,k,l=this.shared;
clearTimeout(this.hideTimer);this.followPointer=ja(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];l&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,h&&p(h,function(a){a.setState()}),p(a,function(a){a.setState("hover");j.push(a.getLabelConfig())}),h={x:a[0].category,y:a[0].y},h.points=j,a=a[0]):h=a.getLabelConfig();i=i.call(h,this);h=a.series;i===!1?this.hide():(this.isHidden&&(Za(d),d.attr("opacity",1).show()),d.attr({text:i}),k=e.borderColor||a.color||h.color||
"#606060",d.attr({stroke:k}),this.updatePosition({plotX:f,plotY:g}),this.isHidden=!1);A(c,"tooltipRefresh",{text:i,x:f+c.plotLeft,y:g+c.plotTop,borderColor:k})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(w(c.x),w(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)}};var $a=Highcharts.Pointer=function(a,b){this.init(a,b)};$a.prototype={init:function(a,b){var c=b.chart,d=c.events,e=da?"":c.zoomType,c=a.inverted,
f;this.options=b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(b.tooltip.enabled)a.tooltip=new tb(a,b.tooltip);this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||C.event;if(!a.target)a.target=a.srcElement;a=Rb(a);d=a.touches?a.touches.item(0):a;if(!b)this.chartPosition=b=Qb(this.chart.container);d.pageX===u?(c=s(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-
b.left,d=d.pageY-b.top);return r(a,{chartX:w(c),chartY:w(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};p(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft},runPointActions:function(a){var b=this,c=b.chart,d=c.series,e=c.tooltip,f,g,h=c.hoverPoint,i=c.hoverSeries,j,k,l=c.chartWidth,m=b.getIndex(a);if(e&&
b.options.tooltip.shared&&(!i||!i.noSharedTooltip)){g=[];j=d.length;for(k=0;k<j;k++)if(d[k].visible&&d[k].options.enableMouseTracking!==!1&&!d[k].noSharedTooltip&&d[k].tooltipPoints.length&&(f=d[k].tooltipPoints[m])&&f.series)f._dist=M(m-f.clientX),l=I(l,f._dist),g.push(f);for(j=g.length;j--;)g[j]._dist>l&&g.splice(j,1);if(g.length&&g[0].clientX!==b.hoverX)e.refresh(g,a),b.hoverX=g[0].clientX}if(i&&i.tracker){if((f=i.tooltipPoints[m])&&f!==h)f.onMouseOver(a)}else e&&e.followPointer&&!e.isHidden&&
(d=e.getAnchor([{}],a),e.updatePosition({plotX:d[0],plotY:d[1]}));if(e&&!b._onDocumentMouseMove)b._onDocumentMouseMove=function(a){b.onDocumentMouseMove(a)},F(y,"mousemove",b._onDocumentMouseMove);p(c.axes,function(b){b.drawCrosshair(a,n(f,h))})},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,f=e&&e.shared?b.hoverPoints:d;(a=a&&e&&f)&&ja(f)[0].plotX===u&&(a=!1);if(a)e.refresh(f),d&&d.setState(d.state,!0);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&e.hide();if(this._onDocumentMouseMove)X(y,
"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null;p(b.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart,d;p(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},pinchTranslate:function(a,b,c,d,e,f,g,h){a&&this.pinchTranslateDirection(!0,c,d,
e,f,g,h);b&&this.pinchTranslateDirection(!1,c,d,e,f,g,h)},pinchTranslateDirection:function(a,b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,m=a?"width":"height",q=i["plot"+(a?"Left":"Top")],o,n,p=h||1,s=i.inverted,t=i.bounds[a?"h":"v"],r=b.length===1,w=b[0][l],u=c[0][l],v=!r&&b[1][l],x=!r&&c[1][l],y,c=function(){!r&&M(w-v)>20&&(p=h||M(u-x)/M(w-v));n=(q-u)/p+w;o=i["plot"+(a?"Width":"Height")]/p};c();b=n;b<t.min?(b=t.min,y=!0):b+o>t.max&&(b=t.max-o,y=!0);y?(u-=0.8*(u-g[j][0]),r||
(x-=0.8*(x-g[j][1])),c()):g[j]=[u,x];s||(f[j]=n-q,f[m]=o);f=s?1/p:p;e[m]=o;e[j]=b;d[s?a?"scaleY":"scaleX":"scale"+k]=p;d["translate"+k]=f*q+(u-f*w)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=c.tooltip&&c.tooltip.options.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.zoomHor||b.pinchHor,j=b.zoomVert||b.pinchVert,k=i||j,l=b.selectionMarker,m={},q=g===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||c.runChartClick),o={};(k||e)&&!q&&a.preventDefault();Ra(f,
function(a){return b.normalize(a)});if(a.type==="touchstart")p(f,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],p(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=I(e,f),e=s(e,f);b.min=I(a.pos,g-d);b.max=s(a.pos+a.len,e+d)}});else if(d.length){if(!l)b.selectionMarker=l=r({destroy:la},c.plotBox);b.pinchTranslate(i,j,d,f,m,l,o,h);b.hasPinched=
k;b.scaleGroups(m,o);!k&&e&&g===1&&this.runPointActions(b.normalize(a))}},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,m=this.mouseDownX,q=this.mouseDownY;d<h?d=h:d>h+j&&(d=h+j);e<i?e=i:e>i+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(m-
d,2)+Math.pow(q-e,2));if(this.hasDragged>10){l=b.isInsidePlot(m-h,q-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=m,this.selectionMarker.attr({width:M(d),x:(d>0?0:d)+m}));this.selectionMarker&&g&&(d=e-q,this.selectionMarker.attr({height:M(d),y:(d>0?0:d)+q}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},
drop:function(a){var b=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},e=this.selectionMarker,f=e.x,g=e.y,h;if(this.hasDragged||c)p(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?f:g),b=a.toValue(b?f+e.width:g+e.height);!isNaN(c)&&!isNaN(b)&&(d[a.coll].push({axis:a,min:I(c,b),max:s(c,b)}),h=!0)}}),h&&A(b,"selection",d,function(a){b.zoom(r(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();
c&&this.scaleGroups()}if(b)D(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){this.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=this.normalize(a,c);c&&d&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,
a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset();this.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart,a=this.normalize(a);b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=v(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=
a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,c=(a=a.relatedTarget||a.toElement)&&a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,f=b.inverted,g,h,i,a=this.normalize(a);a.cancelBubble=!0;if(!b.cancelClick)c&&this.inClass(a.target,"highcharts-tracker")?(g=this.chartPosition,h=c.plotX,i=c.plotY,r(c,{pageX:g.left+d+(f?
b.plotWidth-i:h),pageY:g.top+e+(f?b.plotHeight-h:i)}),A(c.series,"click",r(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&A(b,"click",a))},onContainerTouchStart:function(a){var b=this.chart;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a),this.pinch(a)):this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===
1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){this.drop(a)},setDOMEvents:function(){var a=this,b=a.chart.container,c;this._events=c=[[b,"onmousedown","onContainerMouseDown"],[b,"onmousemove","onContainerMouseMove"],[b,"onclick","onContainerClick"],[b,"mouseleave","onContainerMouseLeave"],[y,"mouseup","onDocumentMouseUp"]];ib&&c.push([b,"ontouchstart","onContainerTouchStart"],[b,"ontouchmove","onContainerTouchMove"],[y,"touchend","onDocumentTouchEnd"]);p(c,function(b){a["_"+
b[2]]=function(c){a[b[2]](c)};b[1].indexOf("on")===0?b[0][b[1]]=a["_"+b[2]]:F(b[0],b[1],a["_"+b[2]])})},destroy:function(){var a=this;p(a._events,function(b){b[1].indexOf("on")===0?b[0][b[1]]=null:X(b[0],b[1],a["_"+b[2]])});delete a._events;clearInterval(a.tooltipTimeout)}};J=Highcharts.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){var d=c.target,e;if(b.hoverSeries!==a)a.onMouseOver();for(;d&&!e;)e=d.point,d=d.parentNode;
if(e!==u&&e!==b.hoverPoint)e.onMouseOver(c)};p(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)p(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){c.onTrackerMouseOut(a)}).css(e),ib))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,
h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,q=function(){if(f.hoverSeries!==a)a.onMouseOver()};if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m<k.length;m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tracker=h.path(d).attr({"stroke-linejoin":"round",visibility:a.visible?"visible":"hidden",stroke:Kb,fill:c?Kb:Q,"stroke-width":b.lineWidth+
(c?0:2*i),zIndex:2}).add(a.group),p([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",q).on("mouseout",function(a){g.onTrackerMouseOut(a)}).css(l);if(ib)a.on("touchstart",q)}))}};if(C.PointerEvent||C.MSPointerEvent){var na={};$a.prototype.getWebkitTouches=function(){var a,b=[];b.item=function(a){return this[a]};for(a in na)na.hasOwnProperty(a)&&b.push({pageX:na[a].pageX,pageY:na[a].pageY,target:na[a].target});return b};Va($a.prototype,"init",function(a,b,c){b.container.style["-ms-touch-action"]=
b.container.style["touch-action"]="none";a.call(this,b,c)});Va($a.prototype,"setDOMEvents",function(a){var b=this;a.apply(this,Array.prototype.slice.call(arguments,1));p([[this.chart.container,"PointerDown","touchstart","onContainerTouchStart",function(a){na[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}}],[this.chart.container,"PointerMove","touchmove","onContainerTouchMove",function(a){na[a.pointerId]={pageX:a.pageX,pageY:a.pageY};if(!na[a.pointerId].target)na[a.pointerId].target=
a.currentTarget}],[document,"PointerUp","touchend","onDocumentTouchEnd",function(a){delete na[a.pointerId]}]],function(a){F(a[0],window.PointerEvent?a[1].toLowerCase():"MS"+a[1],function(d){d=d.originalEvent;if(d.pointerType==="touch"||d.pointerType===d.MSPOINTER_TYPE_TOUCH)a[4](d),b[a[3]]({type:a[2],target:d.currentTarget,preventDefault:la,touches:b.getWebkitTouches()})})})})}var zb=Highcharts.Legend=function(a,b){this.init(a,b)};zb.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=n(b.padding,
8),f=b.itemMarginTop||0;this.options=b;if(b.enabled)c.baseline=z(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=x(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=e-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.lastLineHeight=0,c.symbolWidth=n(b.symbolWidth,16),c.pages=[],c.render(),F(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=
b?c.itemStyle.color:g,h=b?a.legendColor||a.color:g,g=a.options&&a.options.marker,i={stroke:h,fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in g=a.convertAttribs(g),g)d=g[j],d!==u&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;p(["legendItem",
"legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Na(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c=b.translateY,p(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,D(f,{left:b.translateX+e.legendItemWidth+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":Q}))})},renderTitle:function(){var a=
this.padding,b=this.options.title,c=0;if(b.text){if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(b.style).add(this.group);a=this.title.getBBox();c=a.height;this.offsetWidth=a.width;this.contentGroup.attr({translateY:c})}this.titleHeight=c},renderItem:function(a){var B;var b=this,c=b.chart,d=c.renderer,e=b.options,f=e.layout==="horizontal",g=b.symbolWidth,h=e.symbolPadding,i=b.itemStyle,j=b.itemHiddenStyle,k=b.padding,
l=f?n(e.itemDistance,8):0,m=!e.rtl,q=e.width,o=e.itemMarginBottom||0,p=b.itemMarginTop,t=b.initialItemX,r=a.legendItem,u=a.series&&a.series.drawLegendSymbol?a.series:a,v=u.options,v=v&&v.showCheckbox,y=e.useHTML;if(!r&&(a.legendGroup=d.g("legend-item").attr({zIndex:1}).add(b.scrollGroup),u.drawLegendSymbol(b,a),a.legendItem=r=d.text(e.labelFormat?Fa(e.labelFormat,a):e.labelFormatter.call(a),m?g+h:-h,b.baseline,y).css(x(a.visible?i:j)).attr({align:m?"left":"right",zIndex:2}).add(a.legendGroup),(y?
r:a.legendGroup).on("mouseover",function(){a.setState("hover");r.css(b.options.itemHoverStyle)}).on("mouseout",function(){r.css(a.visible?i:j);a.setState()}).on("click",function(b){var c=function(){a.setVisible()},b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):A(a,"legendItemClick",b,c)}),b.colorizeItem(a,a.visible),v))a.checkbox=T("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},e.itemCheckboxStyle,c.container),F(a.checkbox,"click",function(b){A(a,
"checkboxClick",{checked:b.target.checked},function(){a.select()})});d=r.getBBox();B=a.legendItemWidth=e.itemWidth||a.legendItemWidth||g+h+d.width+l+(v?20:0),e=B;b.itemHeight=g=w(a.legendItemHeight||d.height);if(f&&b.itemX-t+e>(q||c.chartWidth-2*k-t))b.itemX=t,b.itemY+=p+b.lastLineHeight+o,b.lastLineHeight=0;b.maxItemWidth=s(b.maxItemWidth,e);b.lastItemY=p+b.itemY+o;b.lastLineHeight=s(g,b.lastLineHeight);a._legendItemPos=[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY+=p+g+o,b.lastLineHeight=g);b.offsetWidth=
q||s((f?b.itemX-t-l:e)+k,b.offsetWidth)},getAllItems:function(){var a=[];p(this.chart.series,function(b){var c=b.options;if(n(c.showInLegend,!t(c.linkedTo)?u:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),
a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=a.getAllItems();ob(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;p(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||m){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null,g,h)),
i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,"stroke-width":l||0,fill:m||Q}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;p(e,function(b){a.positionItem(b)});f&&d.align(r({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,
h,i=this.clipRect,j=e.navigation,k=n(j.animation,!0),l=j.arrowSize||12,m=this.nav,q=this.pages,o,s=this.allItems;e.layout==="horizontal"&&(f/=2);g&&(f=I(f,g));q.length=0;if(a>f&&!e.useHTML){this.clipHeight=h=f-20-this.titleHeight-this.padding;this.currentPage=n(this.currentPage,1);this.fullHeight=a;p(s,function(a,b){var c=a._legendItemPos[1],d=w(a.legendItem.bBox.height),e=q.length;if(!e||c-q[e-1]>h)q.push(o||c);b===s.length-1&&c+d-q[e-1]>h&&q.push(c);c!==o&&(o=c)});if(!i)i=b.clipRect=d.clipRect(0,
this.padding,9999,0),b.contentGroup.clip(i);i.attr({height:h});if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){b.scroll(-1,k)}).add(m),this.pager=d.text("",15,10).css(j.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(m);b.scroll(0);a=f}else if(m)i.attr({height:c.chartHeight}),m.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,
d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==u&&Oa(b,this.chart),this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,
this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};R=Highcharts.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||12;b.legendSymbol=this.chart.renderer.rect(0,a.baseline-5-c/2,a.symbolWidth,c,n(a.options.symbolRadius,2)).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-w(e.fontMetrics(a.options.itemStyle.fontSize).b*
0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};/Trident\/7\.0/.test(ra)&&Va(zb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};c.chart.renderer.forExport?d():setTimeout(d)});fb.prototype={init:function(a,b){var c,d=a.series;a.series=null;c=x(G,
a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",d);var e=d.events;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Ia.length;Ia.push(f);d.reflow!==!1&&F(f,"load",function(){f.initReflow()});if(e)for(g in e)F(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=da?!1:n(d.animation,!0);f.pointCount=0;f.counters=new Ab;
f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=L[a.type||b.type||b.defaultSeriesType])||ka(17,!0);b=new b;b.init(this,a);return b},isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&p(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.isDirtyBox,
j=c.length,k=j,l=this.renderer,m=l.isHidden(),q=[];Oa(a,this);m&&this.cloneRenderTo();for(this.layOutTitles();k--;)if(a=c[k],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(k=j;k--;)if(a=c[k],a.options.stacking)a.isDirty=!0;p(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,p(b,function(a){a.setScale()});this.adjustTickAmounts();
this.getMargins();p(b,function(a){a.isDirty&&(i=!0)});p(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,q.push(function(){A(a,"afterSetExtremes",r(a.eventArgs,a.getExtremes()));delete a.eventArgs});(i||g)&&a.redraw()})}i&&this.drawChartBox();p(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset&&d.reset(!0);l.draw();A(this,"redraw");m&&this.cloneRenderTo(!0);p(q,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===
a)return b[d];for(d=0;d<c.length;d++)if(c[d].options.id===a)return c[d];for(d=0;d<c.length;d++){e=c[d].points||[];for(b=0;b<e.length;b++)if(e[b].id===a)return e[b]}return null},getAxes:function(){var a=this,b=this.options,c=b.xAxis=ja(b.xAxis||{}),b=b.yAxis=ja(b.yAxis||{});p(c,function(a,b){a.index=b;a.isX=!0});p(b,function(a,b){a.index=b});c=c.concat(b);p(c,function(b){new qa(a,b)});a.adjustTickAmounts()},getSelectedPoints:function(){var a=[];p(this.series,function(b){a=a.concat(wb(b.points||[],
function(a){return a.selected}))});return a},getSelectedSeries:function(){return wb(this.series,function(a){return a.selected})},getStacks:function(){var a=this;p(a.yAxis,function(a){if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks});p(a.series,function(b){if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===!1))b.stackKey=b.type+n(b.options.stack,"")})},showResetZoom:function(){var a=this,b=G.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo===
"chart"?null:"plotBox";this.resetZoomButton=a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().align(c.position,!1,f)},zoomOut:function(){var a=this;A(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,d=!1,e;!a||a.resetSelection?p(this.axes,function(a){b=a.zoom()}):p(a.xAxis.concat(a.yAxis),function(a){var e=a.axis,h=e.isXAxis;if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=
e.zoom(a.min,a.max),e.displayBtn&&(d=!0)});e=this.resetZoomButton;if(d&&!e)this.showResetZoom();else if(!d&&S(e))this.resetZoomButton=e.destroy();b&&this.redraw(n(this.options.chart.animation,a&&a.animation,this.pointCount<100))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&p(d,function(a){a.setState()});p(b==="xy"?[1,0]:[1],function(b){var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,i=h.toValue(i+
c[b?"plotWidth":"plotHeight"]-d,!0)-j;h.series.length&&l>I(k.dataMin,k.min)&&i<s(k.dataMax,k.max)&&(h.setExtremes(l,i,!1,!1,{trigger:"pan"}),e=!0);c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(!1);D(c.container,{cursor:"move"})},setTitle:function(a,b){var f;var c=this,d=c.options,e;e=d.title=x(d.title,a);f=d.subtitle=x(d.subtitle,b),d=f;p([["title",a,e],["subtitle",b,d]],function(a){var b=a[0],d=c[b],e=a[1],a=a[2];d&&e&&(c[b]=d=d.destroy());a&&a.text&&!d&&(c[b]=c.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,
"class":"highcharts-"+b,zIndex:a.zIndex||4}).css(a.style).add())});c.layOutTitles()},layOutTitles:function(){var a=0,b=this.title,c=this.subtitle,d=this.options,e=d.title,d=d.subtitle,f=this.spacingBox.width-44;if(b&&(b.css({width:(e.width||f)+"px"}).align(r({y:15},e),!1,"spacingBox"),!e.floating&&!e.verticalAlign))a=b.getBBox().height,a>=18&&a<=25&&(a=15);c&&(c.css({width:(d.width||f)+"px"}).align(r({y:a+e.margin},d),!1,"spacingBox"),!d.floating&&!d.verticalAlign&&(a=Ha(a+c.getBBox().height)));this.titleOffset=
a},getChartSize:function(){var a=this.options.chart,b=this.renderToClone||this.renderTo;this.containerWidth=jb(b,"width");this.containerHeight=jb(b,"height");this.chartWidth=s(0,a.width||this.containerWidth||600);this.chartHeight=s(0,n(a.height,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Na(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=
b=this.renderTo.cloneNode(0),D(b,{position:"absolute",top:"-9999px",display:"block"}),y.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+ub++;if(fa(a))this.renderTo=a=y.getElementById(a);a||ka(13,!0);c=z(v(a,"data-highcharts-chart"));!isNaN(c)&&Ia[c]&&Ia[c].destroy();v(a,"data-highcharts-chart",this.index);a.innerHTML="";a.offsetWidth||this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;
this.container=a=T(Ga,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},r({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new ua(a,c,d,!0):new Ya(a,c,d);da&&this.renderer.create(this,a,c,d)},getMargins:function(){var a=this.spacing,b,c=this.legend,d=this.margin,e=this.options.legend,
f=n(e.margin,10),g=e.x,h=e.y,i=e.align,j=e.verticalAlign,k=this.titleOffset;this.resetMargins();b=this.axisOffset;if(k&&!t(d[0]))this.plotTop=s(this.plotTop,k+this.options.title.margin+a[0]);if(c.display&&!e.floating)if(i==="right"){if(!t(d[1]))this.marginRight=s(this.marginRight,c.legendWidth-g+f+a[1])}else if(i==="left"){if(!t(d[3]))this.plotLeft=s(this.plotLeft,c.legendWidth+g+f+a[3])}else if(j==="top"){if(!t(d[0]))this.plotTop=s(this.plotTop,c.legendHeight+h+f+a[0])}else if(j==="bottom"&&!t(d[2]))this.marginBottom=
s(this.marginBottom,c.legendHeight-h+f+a[2]);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);this.hasCartesianSeries&&p(this.axes,function(a){a.getOffset()});t(d[3])||(this.plotLeft+=b[3]);t(d[0])||(this.plotTop+=b[0]);t(d[2])||(this.marginBottom+=b[2]);t(d[1])||(this.marginRight+=b[1]);this.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||jb(d,"width"),f=c.height||jb(d,"height"),c=
a?a.target:C,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&e&&f&&(c===C||c===y)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=setTimeout(d,100):d();b.containerWidth=e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};F(C,"resize",b);F(a,"destroy",function(){X(C,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&A(d,"endResize",null,function(){d.isResizing-=
1})};Oa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(t(a))d.chartWidth=e=s(0,w(a)),d.hasUserSize=!!e;if(t(b))d.chartHeight=f=s(0,w(b));(oa?kb:D)(d.container,{width:e+"px",height:f+"px"},oa);d.setChartSize(!0);d.renderer.setSize(e,f,c);d.maxTicks=null;p(d.axes,function(a){a.isDirty=!0;a.setScale()});p(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.getMargins();d.redraw(c);d.oldChartHeight=null;A(d,"resize");oa===!1?g():setTimeout(g,oa&&oa.duration||
500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=w(this.plotLeft);this.plotTop=j=w(this.plotTop);this.plotWidth=k=s(0,w(d-i-this.marginRight));this.plotHeight=l=s(0,w(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=
c.plotBox={x:i,y:j,width:k,height:l};d=2*N(this.plotBorderWidth/2);b=Ha(s(d,h[3])/2);c=Ha(s(d,h[0])/2);this.clipBox={x:b,y:c,width:N(this.plotSizeX-s(d,h[1])/2-b),height:N(this.plotSizeY-s(d,h[2])/2-c)};a||p(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this.spacing,b=this.margin;this.plotTop=n(b[0],a[0]);this.marginRight=n(b[1],a[1]);this.marginBottom=n(b[2],a[2]);this.plotLeft=n(b[3],a[3]);this.axisOffset=[0,0,0,0];this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=
this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||0,q,o=this.plotLeft,n=this.plotTop,p=this.plotWidth,s=this.plotHeight,r=this.plotBox,t=this.clipRect,w=this.clipBox;q=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp(null,null,null,c-q,d-q));else{e={fill:j||Q};if(i)e.stroke=a.borderColor,e["stroke-width"]=
i;this.chartBackground=b.rect(q/2,q/2,c-q,d-q,a.borderRadius,i).attr(e).add().shadow(a.shadow)}if(k)f?f.animate(r):this.plotBackground=b.rect(o,n,p,s,0).attr({fill:k}).add().shadow(a.plotShadow);if(l)h?h.animate(r):this.plotBGImage=b.image(l,o,n,p,s).add();t?t.animate({width:w.width,height:w.height}):this.clipRect=b.clipRect(w);if(m)g?g.animate(g.crisp(null,o,n,p,s)):this.plotBorder=b.rect(o,n,p,s,0,-m).attr({stroke:a.plotBorderColor,"stroke-width":m,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=
this,b=a.options.chart,c,d=a.options.series,e,f;p(["inverted","angular","polar"],function(g){c=L[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];for(e=d&&d.length;!f&&e--;)(c=L[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;p(b,function(a){a.linkedSeries.length=0});p(b,function(b){var d=b.options.linkedTo;if(fa(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d})},render:function(){var a=this,b=a.axes,
c=a.renderer,d=a.options,e=d.labels,f=d.credits,g;a.setTitle();a.legend=new zb(a,d.legend);a.getStacks();p(b,function(a){a.setScale()});a.getMargins();a.maxTicks=null;p(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&p(b,function(a){a.render()});if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();p(a.series,function(a){a.translate();a.setTooltipPoints();a.render()});e.items&&p(e.items,function(b){var d=
r(e.style,b.style),f=z(d.left)+a.plotLeft,g=z(d.top)+a.plotTop+12;delete d.left;delete d.top;c.text(b.html,f,g).attr({zIndex:2}).css(d).add()});if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position);a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;A(a,"destroy");Ia[a.index]=u;a.renderTo.removeAttribute("data-highcharts-chart");
X(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();p("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",X(d),f&&Na(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!V&&C==C.top&&y.readyState!=="complete"||da&&!C.canvg?(da?Mb.push(function(){a.firstRender()},
a.options.global.canvasToolsURL):y.attachEvent("onreadystatechange",function(){y.detachEvent("onreadystatechange",a.firstRender);y.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender())a.getContainer(),A(a,"init"),a.resetMargins(),a.setChartSize(),a.propFromSeries(),a.getAxes(),p(b.series||[],function(b){a.initSeries(b)}),a.linkSeries(),A(a,"beforeRender"),a.pointer=new $a(a,b),a.render(),a.renderer.draw(),c&&c.apply(a,
[a]),p(a.callbacks,function(b){b.apply(a,[a])}),a.cloneRenderTo(!0),A(a,"load")},splashArray:function(a,b){var c=b[a],c=S(c)?c:[c,c,c,c];return[n(b[a+"Top"],c[0]),n(b[a+"Right"],c[1]),n(b[a+"Bottom"],c[2]),n(b[a+"Left"],c[3])]}};fb.prototype.callbacks=[];var xb=Highcharts.CenteredSeriesMixin={getCenter:function(){var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight-2*c,b=a.center,a=[n(b[0],"50%"),n(b[1],"50%"),a.size||"100%",a.innerSize||0],g=I(e,f),h;return Ra(a,
function(a,b){h=/%$/.test(a);d=b<2||b===2&&h;return(h?[e,f,g,g][b]*z(a)/100:a)+(d?c:0)})}},Ja=function(){};Ja.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.pointValKey,a=Ja.prototype.optionsToObject.call(this,a);r(this,
a);this.options=this.options?r(this.options,a):a;if(d)this.y=this[d];if(this.x===u&&c)this.x=b===u?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b[d[0]]=a;else if(Ka(a)){if(a.length>e){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;g<e;)b[d[g++]]=a[f++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=
!0}return b},destroy:function(){var a=this.series.chart,b=a.hoverPoints,c;a.pointCount--;if(b&&(this.setState(),ha(b,this),!b.length))a.hoverPoints=null;if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)X(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(c in this)this[c]=null},destroyElements:function(){for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:function(){return{x:this.category,
y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},select:function(a,b){var c=this,d=c.series,e=d.chart,a=n(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=a;d.options.data[sa(c,d.data)]=c.options;c.setState(a&&"select");b||p(e.getSelectedPoints(),function(a){if(a.selected&&a!==c)a.selected=a.options.selected=!1,d.options.data[sa(a,d.data)]=a.options,a.setState(""),
a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;if(e&&e!==this)e.onMouseOut();this.firePointEvent("mouseOver");d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a);this.setState("hover");c.hoverPoint=this},onMouseOut:function(){var a=this.series.chart,b=a.hoverPoints;if(!b||sa(this,b)===-1)this.firePointEvent("mouseOut"),this.setState(),a.hoverPoint=null},tooltipFormatter:function(a){var b=this.series,c=b.tooltipOptions,d=n(c.valueDecimals,
""),e=c.valuePrefix||"",f=c.valueSuffix||"";p(b.pointArrayMap||["y"],function(b){b="{point."+b;if(e||f)a=a.replace(b+"}",e+b+"}"+f);a=a.replace(b+"}",b+":,."+d+"f}")});return Fa(a,{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();a==="click"&&e.allowPointSelect&&(c=function(a){d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});A(this,a,b,c)},importEvents:function(){if(!this.hasImportedEvents){var a=
x(this.series.options.point,this.options).events,b;this.events=a;for(b in a)F(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,b){var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=Y[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{},m=e.chart,q=this.pointAttr,a=a||"",b=b&&k;if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&!i.enabled)||a&&l.states&&l.states[a]&&
l.states[a].enabled===!1)){if(this.graphic)f=g&&this.graphic.symbolName&&q[a].r,this.graphic.attr(x(q[a],f?{x:c-f,y:d-f,width:2*f,height:2*f}:{}));else{if(a&&i)if(f=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({x:c-f,y:d-f});else e.stateMarkerGraphic=k=m.renderer.symbol(l,c-f,d-f,2*f,2*f).attr(q[a]).add(e.markerGroup),k.currentSymbol=l;if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"]()}this.state=a}}};var O=function(){};O.prototype={isCartesian:!0,
type:"line",pointClass:Ja,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this,d,e,f=a.series,g=function(a,b){return n(a.options.index,a._i)-n(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();r(c,{name:b.name,state:"",pointAttr:{},visible:b.visible!==!1,selected:b.selected===!0});if(da)b.animation=
!1;e=b.events;for(d in e)F(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();p(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCartesian)a.hasCartesianSeries=!0;f.push(c);c._i=f.length-1;ob(f,g);this.yAxis&&ob(this.yAxis.series,g);p(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart,d;p(a.axisTypes||[],function(e){p(c[e],function(c){d=
c.options;if(b[e]===d.index||b[e]!==u&&b[e]===d.id||b[e]===u&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0});!a[e]&&a.optionalAxis!==e&&ka(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments;p(c.parallelArrays,typeof b==="number"?function(d){var f=d==="y"&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=f}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))})},autoIncrement:function(){var a=this.options,b=this.xIncrement,b=n(b,a.pointStart,0);this.pointInterval=
n(this.pointInterval,a.pointInterval,1);this.xIncrement=b+this.pointInterval;return b},getSegments:function(){var a=-1,b=[],c,d=this.points,e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else p(d,function(c,g){c.y===null?(g>a+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=
a;c=x(e,c.series,a);this.tooltipOptions=x(G.tooltip,G.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,e;e=a.color||Y[this.type].color;if(!e&&!a.colorByPoint)t(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a=
this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;this.symbol=b.symbol;if(!this.symbol)t(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:R.drawLineMarker,setData:function(a,b){var c=this,d=c.points,e=c.options,f=c.chart,g=null,h=c.xAxis,i=h&&!!h.categories,j;c.xIncrement=null;c.pointRange=i?1:e.pointRange;c.colorCounter=0;var a=a||[],k=a.length;
j=e.turboThreshold;var l=this.xData,m=this.yData,q=c.pointArrayMap,q=q&&q.length;p(this.parallelArrays,function(a){c[a+"Data"].length=0});if(j&&k>j){for(j=0;g===null&&j<k;)g=a[j],j++;if(wa(g)){i=n(e.pointStart,0);e=n(e.pointInterval,1);for(j=0;j<k;j++)l[j]=i,m[j]=a[j],i+=e;c.xIncrement=i}else if(Ka(g))if(q)for(j=0;j<k;j++)e=a[j],l[j]=e[0],m[j]=e.slice(1,q+1);else for(j=0;j<k;j++)e=a[j],l[j]=e[0],m[j]=e[1];else ka(12)}else for(j=0;j<k;j++)if(a[j]!==u&&(e={series:c},c.pointClass.prototype.applyOptions.apply(e,
[a[j]]),c.updateParallelArrays(e,j),i&&e.name))h.names[e.x]=e.name;fa(m[0])&&ka(14,!0);c.data=[];c.options.data=a;for(j=d&&d.length||0;j--;)d[j]&&d[j].destroy&&d[j].destroy();if(h)h.minRange=h.userMinRange;c.isDirty=c.isDirtyData=f.isDirtyBox=!0;n(b,!0)&&f.redraw(!1)},processData:function(a){var b=this.xData,c=this.yData,d=b.length,e;e=0;var f,g,h=this.xAxis,i=this.options,j=i.cropThreshold,k=this.isCartesian;if(k&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(k&&this.sorted&&(!j||
d>j||this.forceCrop))if(a=h.min,h=h.max,b[d-1]<a||b[0]>h)b=[],c=[];else if(b[0]<a||b[d-1]>h)e=this.cropData(this.xData,this.yData,a,h),b=e.xData,c=e.yData,e=e.start,f=!0;for(h=b.length-1;h>=0;h--)d=b[h]-b[h-1],d>0&&(g===u||d<g)?g=d:d<0&&this.requireSorting&&ka(15);this.cropped=f;this.cropStart=e;this.processedXData=b;this.processedYData=c;if(i.pointRange===null)this.pointRange=g||1;this.closestPointRange=g},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,h=n(this.cropShoulder,1),i;for(i=0;i<e;i++)if(a[i]>=
c){f=s(0,i-h);break}for(;i<e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(m=0;m<g;m++)i=h+m,j?l[m]=(new f).init(this,[d[m]].concat(ja(e[m]))):(b[i]?k=b[i]:a[i]!==u&&(b[i]=k=(new f).init(this,a[i],d[m])),l[m]=k);if(b&&
(g!==(c=b.length)||j))for(m=0;m<c;m++)if(m===h&&!j&&(m+=g),b[m])b[m].destroyElements(),b[m].plotX=u;this.data=b;this.points=l},setStackedPoints:function(){if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.stack,e=e.stacking,h=this.stackKey,i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,m=k.oldStacks,q,o,n,p,r;for(n=0;n<d;n++){p=a[n];r=b[n];o=(q=j&&r<f)?
i:h;l[o]||(l[o]={});if(!l[o][p])m[o]&&m[o][p]?(l[o][p]=m[o][p],l[o][p].total=null):l[o][p]=new Gb(k,k.options.stackLabels,q,p,g,e);o=l[o][p];o.points[this.index]=[o.cum||0];e==="percent"?(q=q?h:i,j&&l[q]&&l[q][p]?(q=l[q][p],o.total=q.total=s(q.total,o.total)+M(r)||0):o.total=aa(o.total+(M(r)||0))):o.total=aa(o.total+(r||0));o.cum=(o.cum||0)+(r||0);o.points[this.index].push(o.cum);c[n]=o.cum}if(e==="percent")k.usePercentage=!0;this.stackedYData=c;k.oldStacks={}}},setPercentStacks:function(){var a=
this,b=a.stackKey,c=a.yAxis.stacks;p([b,"-"+b],function(b){var d;for(var e=a.xData.length,f,g;e--;)if(f=a.xData[e],d=(g=c[b]&&c[b][f])&&g.points[a.index],f=d)g=g.total?100/g.total:0,f[0]=aa(f[0]*g),f[1]=aa(f[1]*g),a.stackedYData[e]=f[1]})},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,e=[],f=0;d=this.xAxis.getExtremes();var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;d=a.length;for(l=0;l<d;l++)if(j=c[l],k=a[l],i=k!==null&&k!==u&&(!b.isLog||k.length||k>0),
j=this.getExtremesFromAll||this.cropped||(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=n(void 0,La(e));this.dataMax=n(void 0,za(e))},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||wa(i),k=a.threshold,a=0;a<g;a++){var l=f[a],m=l.x,q=l.y,o=
l.low,p=b&&e.stacks[(this.negStacks&&q<k?"-":"")+this.stackKey];if(e.isLog&&q<=0)l.y=q=null;l.plotX=c.translate(m,0,0,0,1,i,this.type==="flags");if(b&&this.visible&&p&&p[m])p=p[m],q=p.points[this.index],o=q[0],q=q[1],o===0&&(o=n(k,e.min)),e.isLog&&o<=0&&(o=null),l.total=l.stackTotal=p.total,l.percentage=b==="percent"&&l.y/p.total*100,l.stackY=q,p.setOffset(this.pointXOffset||0,this.barW||0);l.yBottom=t(o)?e.translate(o,0,1,0,1):null;h&&(q=this.modifyValue(q,l));l.plotY=typeof q==="number"&&q!==Infinity?
e.translate(q,0,1,0,1):u;l.clientX=j?c.translate(m,0,0,0,1):l.plotX;l.negative=l.y<(k||0);l.category=d&&d[l.x]!==u?d[l.x]:l.x}this.getSegments()},setTooltipPoints:function(a){var b=[],c,d,e=this.xAxis,f=e&&e.getExtremes(),g=e?e.tooltipLen||e.len:this.chart.plotSizeX,h,i,j=[];if(this.options.enableMouseTracking!==!1){if(a)this.tooltipPoints=null;p(this.segments||this.points,function(a){b=b.concat(a)});e&&e.reversed&&(b=b.reverse());this.orderTooltipPoints&&this.orderTooltipPoints(b);a=b.length;for(i=
0;i<a;i++)if(e=b[i],c=e.x,c>=f.min&&c<=f.max){h=b[i+1];c=d===u?0:d+1;for(d=b[i+1]?I(s(0,N((e.clientX+(h?h.wrappedClientX||h.clientX:g))/2)),g):g;c>=0&&c<=d;)j[c++]=e}this.tooltipPoints=j}},tooltipHeaderFormatter:function(a){var b=this.tooltipOptions,c=b.dateTimeLabelFormats,d=b.xDateFormat,e=this.xAxis,f=e&&e.options.type==="datetime",b=b.headerFormat,e=e&&e.closestPointRange,g;if(f&&!d){if(e)for(g in E){if(E[g]>=e){d=c[g];break}}else d=c.day;d=d||c.year}f&&d&&wa(a.key)&&(b=b.replace("{point.key}",
"{point.key:"+d+"}"));return Fa(b,{point:a,series:this})},onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&A(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&A(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState();b.hoverSeries=null},animate:function(a){var b=
this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.inverted,h;if(e&&!S(e))e=Y[b.type].animation;h="_sharedClip"+e.duration+e.easing;if(a)a=c[h],e=c[h+"m"],a||(c[h]=a=d.clipRect(r(f,{width:0})),c[h+"m"]=e=d.clipRect(-99,g?-c.plotLeft:-c.plotTop,99,g?c.chartWidth:c.chartHeight)),b.group.clip(a),b.markerGroup.clip(e),b.sharedClipKey=h;else{if(a=c[h])a.animate({width:c.plotSizeX},e),c[h+"m"].animate({width:c.plotSizeX+99},e);b.animate=null;b.animationTimeout=setTimeout(function(){b.afterAnimate()},
e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=this.group;c&&this.options.clip!==!1&&(c.clip(a.clipRect),this.markerGroup.clip());setTimeout(function(){b&&a[b]&&(a[b]=a[b].destroy(),a[b+"m"]=a[b+"m"].destroy())},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m,q=this.markerGroup;if(l.enabled||this._hasPointMarkers)for(f=b.length;f--;)if(g=b[f],d=N(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{},a=l.enabled&&i.enabled===
u||i.enabled,m=c.isInsidePlot(w(d),e,c.inverted),a&&e!==u&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""],h=a.r,i=n(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k.attr({visibility:m?V?"inherit":"visible":"hidden"}).animate(r({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(m&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(q)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},
c=c||{},d=d||{};for(f in e)g=e[f],h[f]=n(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=Y[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color,h={stroke:g,fill:g},i=a.points||[],j=[],k,l=a.pointAttrToOptions,m=b.negativeColor,n=c.lineColor,o=c.fillColor,s;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=e.color||ta(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,h);p(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],
j[""])});a.pointAttr=j;for(g=i.length;g--;){h=i[g];if((c=h.options&&h.options.marker||h.options)&&c.enabled===!1)c.radius=0;if(h.negative&&m)h.color=h.fillColor=m;k=b.colorByPoint||h.color;if(h.options)for(s in l)t(c[l[s]])&&(k=!0);if(k){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker)f.color=ta(f.color||h.color).brighten(f.brightness||e.brightness).get();f={color:h.color};if(!o)f.fillColor=h.color;if(!n)f.lineColor=h.color;k[""]=a.convertAttribs(r(f,c),j[""]);k.hover=a.convertAttribs(d.hover,
j.hover,k[""]);k.select=a.convertAttribs(d.select,j.select,k[""])}else k=j;h.pointAttr=k}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(ra),d,e,f=a.data||[],g,h,i;A(a,"destroy");X(a);p(a.axisTypes||[],function(b){if(i=a[b])ha(i.series,a),i.isDirty=i.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(e=f.length;e--;)(g=f[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout);p("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),
function(b){a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())});if(b.hoverSeries===a)b.hoverSeries=null;ha(b.series,a);for(h in a)delete a[h]},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;p(a,function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=
this,b=[],c,d=[];p(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=b.linecap!=="square",g=this.getGraphPath(),h=b.negativeColor;h&&c.push(["graphNeg",h]);p(c,function(c,h){var k=c[0],l=a[k];if(l)Za(l),l.animate({d:g});else if(d&&g.length)l={stroke:c[1],"stroke-width":d,zIndex:1},e?l.dashstyle=e:f&&(l["stroke-linecap"]=
l["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(g).attr(l).add(a.group).shadow(!h&&b.shadow)})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=b.chartHeight,k=s(e,j),l=this.yAxis;if(d&&(f||g)){d=w(l.toPixels(a.threshold||0,!0));d<0&&(k-=d);a={x:0,y:0,width:k,height:d};k={x:0,y:d,width:k,height:k};if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={x:b.plotWidth-
d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e});l.reversed?(b=k,e=a):(b=a,e=k);h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};p(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)F(c,"resize",a),F(b,
"destroy",function(){X(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){return{translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis?this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this.chart,b,c=this.options,d=c.animation&&!!this.animate&&a.renderer.isSVG,
e=this.visible?"visible":"hidden",f=c.zIndex,g=this.hasRendered,h=a.seriesGroup;b=this.plotGroup("group","series",e,f,h);this.markerGroup=this.plotGroup("markerGroup","markers",e,f,h);d&&this.animate(!0);this.getAttribs();b.inverted=this.isCartesian?a.inverted:!1;this.drawGraph&&(this.drawGraph(),this.clipNeg());this.drawDataLabels&&this.drawDataLabels();this.visible&&this.drawPoints();this.options.enableMouseTracking!==!1&&this.drawTracker();a.inverted&&this.invertGroups();c.clip!==!1&&!this.sharedClipKey&&
!g&&b.clip(a.clipRect);d?this.animate():g||this.afterAnimate();this.isDirty=this.isDirtyData=!1;this.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:n(d&&d.left,a.plotLeft),translateY:n(e&&e.top,a.plotTop)}));this.translate();this.setTooltipPoints(!0);this.render();b&&A(this,"updatedData")},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,
e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===u?!h:a)?"show":"hide";p(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,
a);c.isDirty=!0;c.options.stacking&&p(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});p(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();A(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===u?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;A(this,a?"select":"unselect")},drawTracker:J.drawTrackerGraph};r(fb.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=
n(b,!0),A(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new qa(this,x(a,{index:this[e].length,isX:b}));f[e]=ja(f[e]||{});f[e].push(a);n(c,!0)&&this.redraw(d)},showLoading:function(a){var b=this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv=c=T(Ga,{className:"highcharts-loading"},r(d.style,{zIndex:10,display:Q}),this.container),this.loadingSpan=T("span",
null,d.labelStyle,c);this.loadingSpan.innerHTML=a||b.lang.loading;if(!this.loadingShown)D(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),kb(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&kb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){D(b,{display:Q})}});this.loadingShown=!1}});r(Ja.prototype,{update:function(a,
b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,i=e.chart,j=e.options,b=n(b,!0);d.firePointEvent("update",{options:a},function(){d.applyOptions(a);if(S(a)){e.getAttribs();if(f)a&&a.marker&&a.marker.symbol?d.graphic=f.destroy():f.attr(d.pointAttr[d.state||""]);if(a&&a.dataLabels&&d.dataLabel)d.dataLabel=d.dataLabel.destroy()}g=sa(d,h);e.updateParallelArrays(d,g);j.data[g]=d.options;e.isDirty=e.isDirtyData=!0;if(!e.fixedBox&&e.hasCartesianSeries)i.isDirtyBox=!0;j.legendType==="point"&&i.legend.destroyItem(d);
b&&i.redraw(c)})},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.chart,g,h=d.data;Oa(b,f);a=n(a,!0);c.firePointEvent("remove",null,function(){g=sa(c,h);h.length===e.length&&e.splice(g,1);h.splice(g,1);d.options.data.splice(g,1);d.updateParallelArrays(c,"splice",g,1);c.destroy();d.isDirty=!0;d.isDirtyData=!0;a&&f.redraw()})}});r(O.prototype,{addPoint:function(a,b,c,d){var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xAxis&&this.xAxis.names,k=g&&g.shift||0,l=e.data,
m,q=this.xData;Oa(d,i);c&&p([g,h,this.graphNeg,this.areaNeg],function(a){if(a)a.shift=k+1});if(h)h.isArea=!0;b=n(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d,[a]);g=d.x;h=q.length;if(this.requireSorting&&g<q[h-1])for(m=!0;h&&q[h-1]>g;)h--;this.updateParallelArrays(d,"splice",h,0,0);this.updateParallelArrays(d,h);if(j)j[g]=d.name;l.splice(h,0,a);m&&(this.data.splice(h,0,null),this.processData());e.legendType==="point"&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):
(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=this.isDirty=!0;b&&(this.getAttribs(),i.redraw())},remove:function(a,b){var c=this,d=c.chart,a=n(a,!0);if(!c.isRemoving)c.isRemoving=!0,A(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=!1},update:function(a,b){var c=this.chart,d=this.type,e=L[d].prototype,f,a=x(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},
a);this.remove(!1);for(f in e)e.hasOwnProperty(f)&&(this[f]=u);r(this,L[a.type||d].prototype);this.init(c,a);n(b,!0)&&c.redraw(!1)}});r(qa.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=x(this.userOptions,a);this.destroy(!0);this._addedPlotLB=this.userMin=this.userMax=u;this.init(c,r(a,{events:u}));c.isDirtyBox=!0;n(b,!0)&&c.redraw()},remove:function(a){var b=this.chart,c=this.coll;p(this.series,function(a){a.remove(!1)});ha(b.axes,this);ha(b[c],this);
b.options[c].splice(this.options.index,1);p(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;n(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});var ca=ia(O);L.line=ca;Y.area=x(W,{threshold:0});var Ua=ia(O,{type:"area",getSegments:function(){var a=[],b=[],c=[],d=this.xAxis,e=this.yAxis,f=e.stacks[this.stackKey],g={},h,i,j=this.points,k=this.options.connectNulls,l,m,n;if(this.options.stacking&&!this.cropped){for(m=
0;m<j.length;m++)g[j[m].x]=j[m];for(n in f)f[n].total!==null&&c.push(+n);c.sort(function(a,b){return a-b});p(c,function(a){if(!k||g[a]&&g[a].y!==null)g[a]?b.push(g[a]):(h=d.translate(a),l=f[a].percent?f[a].total?f[a].cum*100/f[a].total:0:f[a].cum,i=e.toPixels(l,!0),b.push({y:null,plotX:h,clientX:h,plotY:i,yBottom:i,onMouseOver:la}))});b.length&&a.push(b)}else O.prototype.getSegments.call(this),a=this.segments;this.segments=a},getSegmentPath:function(a){var b=O.prototype.getSegmentPath.call(this,a),
c=[].concat(b),d,e=this.options;d=b.length;var f=this.yAxis.getThreshold(e.threshold),g;d===3&&c.push("L",b[1],b[2]);if(e.stacking&&!this.closedStacks)for(d=a.length-1;d>=0;d--)g=n(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);else this.closeSegment(c,a,f);this.areaPath=this.areaPath.concat(c);return b},closeSegment:function(a,b,c){a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];O.prototype.drawGraph.apply(this);var a=this,
b=this.areaPath,c=this.options,d=c.negativeColor,e=c.negativeFillColor,f=[["area",this.color,c.fillColor]];(d||e)&&f.push(["areaNeg",d,e]);p(f,function(d){var e=d[0],f=a[e];f?f.animate({d:b}):a[e]=a.chart.renderer.path(b).attr({fill:n(d[2],ta(d[1]).setOpacity(n(c.fillOpacity,0.75)).get()),zIndex:0}).add(a.group)})},drawLegendSymbol:R.drawRectangle});L.area=Ua;Y.spline=x(W);ca=ia(O,{type:"spline",getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;if(f&&g){a=f.plotY;j=
g.plotX;var g=g.plotY,l;h=(1.5*d+f.plotX)/2.5;i=(1.5*e+a)/2.5;j=(1.5*d+j)/2.5;k=(1.5*e+g)/2.5;l=(k-i)*(j-d)/(j-h)+e-k;i+=l;k+=l;i>a&&i>e?(i=s(a,e),k=2*e-i):i<a&&i<e&&(i=I(a,e),k=2*e-i);k>g&&k>e?(k=s(g,e),i=2*e-k):k<g&&k<e&&(k=I(g,e),i=2*e-k);b.rightContX=j;b.rightContY=k}c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=f.rightContY=null):b=["M",d,e];return b}});L.spline=ca;Y.areaspline=x(Y.area);Ua=Ua.prototype;ca=ia(ca,{type:"areaspline",closedStacks:!0,getSegmentPath:Ua.getSegmentPath,
closeSegment:Ua.closeSegment,drawGraph:Ua.drawGraph,drawLegendSymbol:R.drawRectangle});L.areaspline=ca;Y.column=x(W,{borderColor:"#FFFFFF",borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:0.1,shadow:!1},select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},stickyTracking:!1,threshold:0});ca=ia(O,{type:"column",pointAttrToOptions:{stroke:"borderColor",
"stroke-width":"borderWidth",fill:"color",r:"borderRadius"},cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){O.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===a.type)b.isDirty=!0})},getColumnMetrics:function(){var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=c.reversed,f,g={},h,i=0;b.grouping===!1?i=1:p(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===
e.pos)c.stacking?(f=b.stackKey,g[f]===u&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h});var c=I(M(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=t(l)?(k-l)/2:k*b.pointPadding,l=n(l,k-2*b);return a.columnMetrics={width:l,offset:b+(j+((e?i-(a.columnIndex||0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}},translate:function(){var a=this.chart,b=this.options,c=b.borderWidth,d=this.yAxis,e=this.translatedThreshold=d.getThreshold(b.threshold),
f=n(b.minPointLength,5),b=this.getColumnMetrics(),g=b.width,h=this.barW=Ha(s(g,1+2*c)),i=this.pointXOffset=b.offset,j=-(c%2?0.5:0),k=c%2?0.5:1;a.renderer.isVML&&a.inverted&&(k+=1);O.prototype.translate.apply(this);p(this.points,function(a){var b=n(a.yBottom,e),c=I(s(-999-b,a.plotY),d.len+999+b),o=a.plotX+i,p=h,r=I(c,b),t,c=s(c,b)-r;M(c)<f&&f&&(c=f,r=w(M(r-e)>f?b-f:e-(d.translate(a.y,0,1,0,1)<=e?f:0)));a.barX=o;a.pointWidth=g;b=M(o)<0.5;p=w(o+p)+j;o=w(o)+j;p-=o;t=M(r)<0.5;c=w(r+c)+k;r=w(r)+k;c-=r;
b&&(o+=1,p-=1);t&&(r-=1,c+=1);a.shapeType="rect";a.shapeArgs={x:o,y:r,width:p,height:c}})},getSymbol:la,drawLegendSymbol:R.drawRectangle,drawGraph:la,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=b.options.animationLimit||250,f;p(a.points,function(g){var h=g.plotY,i=g.graphic;if(h!==u&&!isNaN(h)&&g.y!==null)f=g.shapeArgs,i?(Za(i),i[b.pointCount<e?"animate":"attr"](x(f))):g.graphic=d[g.shapeType](f).attr(g.pointAttr[g.selected?"select":""]).add(a.group).shadow(c.shadow,null,
c.stacking&&!c.borderRadius);else if(i)g.graphic=i.destroy()})},drawTracker:J.drawTrackerPoint,animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(V)a?(e.scaleY=0.001,a=I(b.pos+b.len,s(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===
a.type)b.isDirty=!0});O.prototype.remove.apply(a,arguments)}});L.column=ca;Y.bar=x(Y.column);ca=ia(ca,{type:"bar",inverted:!0});L.bar=ca;Y.scatter=x(W,{lineWidth:0,tooltip:{headerFormat:'<span style="font-size: 10px; color:{series.color}">{series.name}</span><br/>',pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>",followPointer:!0},stickyTracking:!1});ca=ia(O,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,drawTracker:J.drawTrackerPoint,
drawGraph:function(){this.options.lineWidth&&O.prototype.drawGraph.call(this)},setTooltipPoints:la});L.scatter=ca;Y.pie=x(W,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});W={type:"pie",isCartesian:!1,pointClass:ia(Ja,
{init:function(){Ja.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;r(a,{visible:a.visible!==!1,name:n(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};F(a,"select",b);F(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart,e;b.visible=b.options.visible=a=a===u?!b.visible:a;c.options.data[sa(b,c.data)]=b.options;e=a?"show":"hide";p(["graphic","dataLabel","connector","shadowGroup"],function(a){if(b[a])b[a][e]()});b.legendItem&&d.legend.colorizeItem(b,
a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Oa(c,d.chart);n(b,!0);this.sliced=this.options.sliced=a=t(a)?a:!this.sliced;d.options.data[sa(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",
fill:"color"},getColor:la,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)p(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b){O.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();n(b,!0)&&this.chart.redraw()},generatePoints:function(){var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;O.prototype.generatePoints.call(this);
c=this.points;d=c.length;for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?0:e.y;this.total=b;for(a=0;a<d;a++)e=c[a],e.percentage=b>0?e.y/b*100:0,e.total=b},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=Aa/180*(i-90),i=(this.endAngleRad=Aa/180*((c.endAngle||i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,m,n=k.length,o;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=
P.asin((b-a[1])/(a[2]/2+l));return a[0]+(c?-1:1)*U(h)*(a[2]/2+l)};for(m=0;m<n;m++){o=k[m];f=j+b*i;if(!c||o.visible)b+=o.percentage/100;g=j+b*i;o.shapeType="arc";o.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:w(f*1E3)/1E3,end:w(g*1E3)/1E3};h=(g+f)/2;h>0.75*i&&(h-=2*Aa);o.slicedTranslation={translateX:w(U(h)*d),translateY:w(ba(h)*d)};f=U(h)*a[2]/2;g=ba(h)*a[2]/2;o.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];o.half=h<-Aa/2||h>Aa/2?1:0;o.angle=h;e=I(e,l/2);o.labelPos=[a[0]+f+U(h)*l,a[1]+g+ba(h)*l,a[0]+
f+U(h)*e,a[1]+g+ba(h)*e,a[0]+f,a[1]+g,l<0?"center":o.half?"right":"left",h]}},setTooltipPoints:la,drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);p(a.points,function(h){d=h.graphic;g=h.shapeArgs;f=h.shadowGroup;if(e&&!f)f=h.shadowGroup=b.g("shadow").add(a.shadowGroup);c=h.sliced?h.slicedTranslation:{translateX:0,translateY:0};f&&f.attr(c);d?d.animate(r(g,c)):h.graphic=d=b.arc(g).setRadialReference(a.center).attr(h.pointAttr[h.selected?
"select":""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,f);h.visible!==void 0&&h.setVisible(h.visible)})},sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawTracker:J.drawTrackerPoint,drawLegendSymbol:R.drawRectangle,getCenter:xb.getCenter,getSymbol:la};W=ia(O,W);L.pie=W;O.prototype.drawDataLabels=function(){var a=this,b=a.options,c=b.cursor,d=b.dataLabels,b=a.points,e,f,g,h;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),
h=a.plotGroup("dataLabelsGroup","data-labels",a.visible?"visible":"hidden",d.zIndex||6),f=d,p(b,function(b){var j,k=b.dataLabel,l,m,p=b.connector,o=!0;e=b.options&&b.options.dataLabels;j=n(e&&e.enabled,f.enabled);if(k&&!j)b.dataLabel=k.destroy();else if(j){d=x(f,e);j=d.rotation;l=b.getLabelConfig();g=d.format?Fa(d.format,l):d.formatter.call(l,d);d.style.color=n(d.color,d.style.color,a.color,"black");if(k)if(t(g))k.attr({text:g}),o=!1;else{if(b.dataLabel=k=k.destroy(),p)b.connector=p.destroy()}else if(t(g)){k=
{fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:j,padding:d.padding,zIndex:1};for(m in k)k[m]===u&&delete k[m];k=b.dataLabel=a.chart.renderer[j?"text":"label"](g,0,-999,null,null,null,d.useHTML).attr(k).css(r(d.style,c&&{cursor:c})).add(h).shadow(d.shadow)}k&&a.alignDataLabel(b,k,d,null,o)}})};O.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=n(a.plotX,-999),i=n(a.plotY,-999),j=b.getBBox();if(a=this.visible&&(a.series.forceDL||
f.isInsidePlot(a.plotX,a.plotY,g)))d=r({x:g?f.plotWidth-i:h,y:w(g?f.plotHeight-h:i),width:0,height:0},d),r(c,{width:j.width,height:j.height}),c.rotation?(g={align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](g)):(b.align(c,null,d),g=b.alignAttr,n(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,c,g,j,d,e):n(c.crop,!0)&&(a=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)));if(!a)b.attr({y:-999}),b.placed=!1};O.prototype.justifyDataLabel=function(a,
b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k;j=c.x;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;if(k)a.placed=!f,a.align(b,null,e)};if(L.pie)L.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=n(e.connectorPadding,
10),g=n(e.connectorWidth,1),h=d.plotWidth,d=d.plotHeight,i,j,k=n(e.softConnector,!0),l=e.distance,m=a.center,q=m[2]/2,o=m[1],r=l>0,t,u,v,x,y=[[],[]],z,A,E,K,B,D=[0,0,0,0],I=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){O.prototype.drawDataLabels.apply(a);p(b,function(a){a.dataLabel&&a.visible&&y[a.half].push(a)});for(K=0;!x&&b[K];)x=b[K]&&b[K].dataLabel&&(b[K].dataLabel.getBBox().height||21),K++;for(K=2;K--;){var b=[],J=[],F=y[K],G=F.length,C;a.sortByAngle(F,K-0.5);if(l>
0){for(B=o-q-l;B<=o+q+l;B+=x)b.push(B);u=b.length;if(G>u){c=[].concat(F);c.sort(I);for(B=G;B--;)c[B].rank=B;for(B=G;B--;)F[B].rank>=u&&F.splice(B,1);G=F.length}for(B=0;B<G;B++){c=F[B];v=c.labelPos;c=9999;var L,N;for(N=0;N<u;N++)L=M(b[N]-v[1]),L<c&&(c=L,C=N);if(C<B&&b[B]!==null)C=B;else for(u<G-B+C&&b[B]!==null&&(C=u-G+B);b[C]===null;)C++;J.push({i:C,y:b[C]});b[C]=null}J.sort(I)}for(B=0;B<G;B++){c=F[B];v=c.labelPos;t=c.dataLabel;E=c.visible===!1?"hidden":"visible";c=v[1];if(l>0){if(u=J.pop(),C=u.i,
A=u.y,c>A&&b[C+1]!==null||c<A&&b[C-1]!==null)A=c}else A=c;z=e.justify?m[0]+(K?-1:1)*(q+l):a.getX(C===0||C===b.length-1?c:A,K);t._attr={visibility:E,align:v[6]};t._pos={x:z+e.x+({left:f,right:-f}[v[6]]||0),y:A+e.y-10};t.connX=z;t.connY=A;if(this.options.size===null)u=t.width,z-u<f?D[3]=s(w(u-z+f),D[3]):z+u>h-f&&(D[1]=s(w(z+u-h+f),D[1])),A-x/2<0?D[0]=s(w(-A+x/2),D[0]):A+x/2>d&&(D[2]=s(w(A+x/2-d),D[2]))}}if(za(D)===0||this.verifyDataLabelOverflow(D))this.placeDataLabels(),r&&g&&p(this.points,function(b){i=
b.connector;v=b.labelPos;if((t=b.dataLabel)&&t._pos)E=t._attr.visibility,z=t.connX,A=t.connY,j=k?["M",z+(v[6]==="left"?5:-5),A,"C",z,A,2*v[2]-v[4],2*v[3]-v[5],v[2],v[3],"L",v[4],v[5]]:["M",z+(v[6]==="left"?5:-5),A,"L",v[2],v[3],"L",v[4],v[5]],i?(i.animate({d:j}),i.attr("visibility",E)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:E}).add(a.group);else if(i)b.connector=i.destroy()})}},L.pie.prototype.placeDataLabels=function(){p(this.points,
function(a){var a=a.dataLabel,b;if(a)(b=a._pos)?(a.attr(a._attr),a[a.moved?"animate":"attr"](b),a.moved=!0):a&&a.attr({y:-999})})},L.pie.prototype.alignDataLabel=la,L.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=s(b[2]-s(a[1],a[3]),c):(e=s(b[2]-a[1]-a[3],c),b[0]+=(a[3]-a[1])/2);d[1]!==null?e=s(I(e,b[2]-s(a[0],a[2])),c):(e=s(I(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);e<b[2]?(b[2]=e,this.translate(b),p(this.points,function(a){if(a.dataLabel)a.dataLabel._pos=
null}),this.drawDataLabels&&this.drawDataLabels()):f=!0;return f};if(L.column)L.column.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>n(this.translatedThreshold,f.plotSizeY),j=n(c.inside,!!this.options.stacking);if(h&&(d=x(h),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=n(c.align,!g||j?"center":i?"right":"left");
c.verticalAlign=n(c.verticalAlign,g||j?"middle":i?"top":"bottom");O.prototype.alignDataLabel.call(this,a,b,c,d,e)};r(Highcharts,{Axis:qa,Chart:fb,Color:ta,Point:Ja,Tick:Qa,Tooltip:tb,Renderer:Ya,Series:O,SVGElement:pa,SVGRenderer:ua,arrayMin:La,arrayMax:za,charts:Ia,dateFormat:ab,format:Fa,pathAnim:vb,getOptions:function(){return G},hasBidiBug:Nb,isTouchDevice:Ib,numberFormat:Da,seriesTypes:L,setOptions:function(a){G=x(!0,G,a);Bb();return G},addEvent:F,removeEvent:X,createElement:T,discardElement:Na,
css:D,each:p,extend:r,map:Ra,merge:x,pick:n,splat:ja,extendClass:ia,pInt:z,wrap:Va,svg:V,canvas:da,vml:!V&&!da,product:"Highcharts",version:"3.0.9"})})();

View File

@ -0,0 +1,38 @@
createGraphElement("div");
if(document.getElementById('graph')) {
var chart = new Highcharts.Chart({
chart: {
animation: false,
renderTo: 'graph'
},
legend: {
align: 'center',
verticalAlign: 'top',
y: 25
},
plotOptions: {
line: {
animation: false,
lineWidth: 3,
marker: {
radius: 6
},
pointPlacement: 'on'
}
},
title: {
text: graph_title
},
xAxis: {
categories: graph_labels,
tickmarkPlacement: 'on'
},
yAxis: {
maxPadding: 0,
min: 0,
minPadding: 0
},
series: graph_series
});
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More