Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
mincss
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Taddeüs Kroes
mincss
Commits
9a5848cf
Commit
9a5848cf
authored
10 years ago
by
Taddeüs Kroes
Browse files
Options
Downloads
Patches
Plain Diff
Rewrote main function, added some command-line arguments
parent
21017977
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
main.ml
+65
-27
65 additions, 27 deletions
main.ml
types.ml
+0
-6
0 additions, 6 deletions
types.ml
util.ml
+8
-9
8 additions, 9 deletions
util.ml
with
73 additions
and
42 deletions
main.ml
+
65
−
27
View file @
9a5848cf
open
Lexing
open
Types
type
args
=
{
mutable
infiles
:
string
list
;
mutable
outfile
:
string
option
;
mutable
verbose
:
int
;
mutable
echo
:
bool
;
mutable
keep_comments
:
bool
;
}
(* Parse command-line arguments *)
let
parse_args
()
=
let
args
=
{
infiles
=
[]
;
outfile
=
None
;
verbose
=
1
;
echo
=
false
;
keep_comments
=
false
;
}
in
let
args_spec
=
[
(
"<file> ..."
,
Arg
.
Rest
(
fun
_
->
()
)
,
...
...
@@ -18,6 +28,12 @@ let parse_args () =
(
"-v"
,
Arg
.
Int
(
fun
i
->
args
.
verbose
<-
i
)
,
"<num> Set verbosity (0: nothing, 1: errors (default), \
2: compression rate, 3: debug)"
);
(
"--echo"
,
Arg
.
Unit
(
fun
_
->
args
.
echo
<-
true
)
,
" Don't minify, just pretty-print the parsed CSS"
);
(
"--keep-comments"
,
Arg
.
Unit
(
fun
_
->
args
.
keep_comments
<-
true
)
,
"
\n
Preserve top-level comments"
);
]
in
let
usage
=
...
...
@@ -27,35 +43,57 @@ let parse_args () =
Arg
.
parse
args_spec
(
fun
f
->
args
.
infiles
<-
args
.
infiles
@
[
f
])
usage
;
args
(* Main function, returns exit status
* Command-line arguments are stored in lobals.args *)
let
parse_files
=
function
|
[]
->
let
input
=
Util
.
input_buffered
stdin
512
in
(
input
,
Parse
.
parse_input
"<stdin>"
input
)
|
files
->
let
rec
loop
=
function
|
[]
->
[]
|
filename
::
tl
->
let
input
=
Util
.
input_all
(
open_in
filename
)
in
let
stylesheet
=
Parse
.
parse_input
filename
input
in
(
input
,
stylesheet
)
::
loop
tl
in
let
inputs
,
stylesheets
=
List
.
split
(
loop
files
)
in
(
String
.
concat
""
inputs
,
List
.
concat
stylesheets
)
let
handle_args
args
=
let
input
,
stylesheet
=
parse_files
args
.
infiles
in
let
write_output
=
match
args
.
outfile
with
|
None
->
print_endline
|
Some
name
->
fun
css
->
let
f
=
open_out
name
in
output_string
f
css
;
close_out
f
in
match
args
with
|
{
echo
=
true
}
->
write_output
(
Stringify
.
string_of_stylesheet
stylesheet
)
|
_
->
let
output
=
Stringify
.
minify_stylesheet
stylesheet
in
write_output
output
;
if
args
.
verbose
>=
2
then
begin
let
il
=
String
.
length
input
in
let
ol
=
String
.
length
output
in
Printf
.
fprintf
stderr
"compression: %d -> %d bytes (%d%% of original)
\n
"
il
ol
(
int_of_float
(
float_of_int
ol
/.
float_of_int
il
*.
100
.
))
end
(* Main function, returns exit status *)
let
main
()
=
let
args
=
parse_args
()
in
try
let
stylesheet
=
match
args
.
infiles
with
|
[]
->
let
input
=
Util
.
input_buffered
stdin
512
in
Parse
.
parse_input
"<stdin>"
input
|
files
->
let
rec
loop
=
function
|
[]
->
[]
|
filename
::
tl
->
let
input
=
Util
.
input_all
(
open_in
filename
)
in
let
stylesheet
=
Parse
.
parse_input
filename
input
in
stylesheet
@
loop
tl
in
loop
files
in
print_endline
(
Stringify
.
string_of_stylesheet
stylesheet
);
print_endline
"
\n
"
;
print_endline
(
Stringify
.
minify_stylesheet
stylesheet
);
exit
0
with
|
LocError
(
loc
,
msg
)
->
Util
.
prerr_loc_msg
args
loc
(
"Error: "
^
msg
);
|
Failure
err
->
prerr_endline
(
"Error: "
^
err
);
begin
try
handle_args
args
;
exit
0
with
|
LocError
(
loc
,
msg
)
->
Util
.
prerr_loc_msg
(
args
.
verbose
>=
1
)
loc
(
"Error: "
^
msg
);
|
Failure
err
->
prerr_endline
(
"Error: "
^
err
);
end
;
exit
1
let
_
=
main
()
This diff is collapsed.
Click to expand it.
types.ml
+
0
−
6
View file @
9a5848cf
...
...
@@ -53,12 +53,6 @@ type statement =
type
stylesheet
=
statement
list
type
args
=
{
mutable
infiles
:
string
list
;
mutable
outfile
:
string
option
;
mutable
verbose
:
int
;
}
type
loc
=
string
*
int
*
int
*
int
*
int
exception
SyntaxError
of
string
...
...
This diff is collapsed.
Click to expand it.
util.ml
+
8
−
9
View file @
9a5848cf
...
...
@@ -36,7 +36,8 @@ let count_tabs str upto =
let
rec
count
n
=
function
|
0
->
n
|
i
->
count
(
if
String
.
get
str
(
i
-
1
)
=
'\t'
then
n
+
1
else
n
)
(
i
-
1
)
in
count
0
upto
in
count
0
upto
let
rec
repeat
s
n
=
if
n
<
1
then
""
else
s
^
(
repeat
s
(
n
-
1
))
...
...
@@ -48,7 +49,7 @@ let prerr_loc (fname, ystart, yend, xstart, xend) =
let
file
=
open_in
fname
in
(* skip lines until the first matched line *)
for
i
=
1
to
ystart
-
1
do
let
_
=
input_line
file
in
(
)
done
;
for
i
=
1
to
ystart
-
1
do
ignore
(
input_line
file
)
done
;
(* for each line in `loc`, print the source line with an underline *)
for
l
=
ystart
to
yend
do
...
...
@@ -63,11 +64,10 @@ let prerr_loc (fname, ystart, yend, xstart, xend) =
for
i
=
left
to
right
do
prerr_char
'
^
'
done
;
prerr_endline
""
;
end
done
;
()
done
let
prerr_loc_msg
args
loc
msg
=
if
args
.
verbose
>=
1
then
begin
let
prerr_loc_msg
verbose
loc
msg
=
if
verbose
then
begin
let
(
fname
,
ystart
,
yend
,
xstart
,
xend
)
=
loc
in
if
loc
!=
noloc
then
begin
let
line_s
=
if
yend
!=
ystart
...
...
@@ -82,8 +82,7 @@ let prerr_loc_msg args loc msg =
end
;
eprintf
"%s
\n
"
msg
;
if
args
.
verbose
>=
1
&&
loc
!=
noloc
then
if
verbose
&&
loc
!=
noloc
then
try
prerr_loc
loc
with
Sys_error
_
->
()
end
;
()
end
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment