Before

…lines 1–33 unchanged (33 lines)
34نوفمبر 11
35ديسمبر 12
36", sep="\t"))
37
38anal_year <- function(y)
39{
40 if (!is.finite(as.integer(y))) {
41 warning("Year number is not integral")
42 }
43 GET(paste0('https://www.ummulqura.org.sa/yearcalender.aspx?y=',y,'&l=True')) -> x
44 x <- content(x)
45 cal <- html_element(x, xpath='//table//table[count(tr)=4 and count(tr/td)=12]')
46 mos <- html_elements(cal, xpath='tr/td//td[count(table)=2]')
47
48 ## ym_hijri <- html_text(html_element(mos[12L], xpath='table[1]//span'))
49 ## ym_greg <- html_text(html_element(mos[1L], xpath='table[2]/tr[2]//span'))
50
51 anal_month <- function(nod)
52 {
53 ym_hijri <- html_text(html_element(nod, xpath='table[1]//span'))
54 ym_greg <- html_text(html_element(nod, xpath='table[2]/tr[2]//span'))
55 mon <- html_element(nod, xpath='table[2]/tr[4]/td/table')
56 d_hijri <- html_text(html_elements(mon, xpath='tr/td/table/tr[1]/td/span/text()'))
57 d_greg <- html_text(html_elements(mon, xpath='tr/td/table/tr[2]/td/span/text()'))
58
59 r <- data.table(hd=d_hijri,
60 hm=.hijri_m[sub(" [0-9].*","",ym_hijri),n],
61 hy=sub(".*?([0-9]+).*","\\1",ym_hijri),
62 gd=d_greg,
63 gm=.greg_m[sub(" [0-9].*","",ym_greg),n],
64 gy=sub(".*?([0-9]+).*","\\1",ym_greg))
65 r[hd=="1"]
66 }
67
…lines 68–82 unchanged (15 lines)
83 outf <- args[tmp]
84 args <- args[-tmp]
85 }
86 if (as.c <- !is.na(tmp <- match("--as.c", args))) {
87 args <- args[-tmp]
88 }
89
90 r <- rbindlist(lapply(args, anal_year))
91 ## as a service calculate the ldn
92 r[, ldn := as.integer(as.IDate(paste(gy,gm,gd,sep='-')))+141427L]
93 r <- unique(setkey(r, ldn))
94 if (!as.c) {
95 fwrite(r, outf, sep="\t", na="", quote=FALSE)
96 } else {
97 r <- r[, .(ldn=paste0(ldn,'U',collapse=',')), by="hy"]
98
99 sink(outf)
100 cat('/* auto-generated by snarf-ummulqura.R */\n\n')
101 cat('#define UMMULQURA_BASE (',r[,min(hy)],')\n\n');
102 cat('static uint32_t _bom[][12] = {\n')
103 cat(r[, paste0('\t[',hy,' - UMMULQURA_BASE] = {',ldn,'},')],sep='\n')
104 cat('};\n')
105 sink()
106 }
107}
108

After

…lines 1–33 unchanged (33 lines)
34نوفمبر 11
35ديسمبر 12
36", sep="\t"))
37
38anal_year <- function(y)
39{
40 hndl <- handle('https://www.ummulqura.org.sa')
41 if (!is.finite(as.integer(y))) {
42 warning("Year number is not integral")
43 }
44 GET(paste0('https://www.ummulqura.org.sa/yearcalender.aspx?y=',y,'&l=True')) -> x
45 x <- content(x)
46 cal <- html_element(x, xpath='//table[count(tr)=4 and count(tr/td)=12]')
47 y_hijri <- html_text(html_element(cal, xpath='//span[@class="current-year"]/text()'))
48 mos <- html_elements(cal, xpath='.//td[table[@class="calTB_big"]]')
49
50 anal_month <- function(nod)
51 {
52 m_hijri <- html_text(html_element(nod, xpath='.//div/span[2]'))
53 ym_greg <- html_text(html_element(nod, xpath='.//div/span[1]'))
54 mon <- html_element(nod, xpath='.//table[@class="calTB2_big"]')
55 d_hijri <- html_text(html_elements(mon, xpath='.//td[@class="Tb_digit_L"]/span/text()'))
56 d_greg <- html_text(html_elements(mon, xpath='..//td[@class="Tb_digit_S"]/span/text()'))
57
58 r <- data.table(hd=d_hijri,
59 hm=.hijri_m[sub(" [0-9].*","",m_hijri),n],
60 hy=y_hijri,
61 gd=d_greg,
62 gm=.greg_m[sub(" [0-9].*","",ym_greg),n],
63 gy=sub(".*?([0-9]+).*","\\1",ym_greg))
64 r[hd=="1"]
65 }
66
…lines 67–82 unchanged (16 lines)
83 args <- args[-tmp]
84 }
85 if (as.c <- !is.na(tmp <- match("--as.c", args))) {
86 args <- args[-tmp]
87 }
88
89 if (!length(args)) {
90 stop("YEAR argument missing. See --help.")
91 }
92
93 set_config(config(ssl_verifypeer=0L))
94 r <- rbindlist(lapply(args, anal_year))
95 ## as a service calculate the ldn
96 r[, ldn := as.integer(as.IDate(paste(gy,gm,gd,sep='-')))+141427L]
97 r <- unique(setkey(r, ldn))
98 if (!as.c) {
99 fwrite(r, outf, sep="\t", na="", quote=FALSE)
100 } else {
101 r <- r[, .(ldn=paste0(ldn,'U',collapse=',')), by="hy"]
102
103 if (outf>"") sink(outf)
104 cat('/* auto-generated by snarf-ummulqura.R */\n\n')
105 cat('#define UMMULQURA_BASE (',r[,min(hy)],')\n\n');
106 cat('static uint32_t _bom[][12] = {\n')
107 cat(r[, paste0('\t[',hy,' - UMMULQURA_BASE] = {',ldn,'},')],sep='\n')
108 cat('};\n')
109 if (outf>"") sink()
110 }
111}
112

Before

program
comment "#!/home/freundt/usr/bin/Rscript --vanilla"
call
identifier "library"
arguments
( "("
argument
identifier "httr"
) ")"
call
identifier "library"
arguments
( "("
argument
identifier "data.table"
) ")"
call
identifier "library"
arguments
( "("
argument
identifier "rvest"
) ")"
call
identifier "set_config"
arguments
( "("
argument
call
identifier "config"
arguments
( "("
argument
identifier "ssl_verifypeer"
= "="
integer
L "L"
) ")"
) ")"
binary_operator (+28 nodes collapsed)
binary_operator (+28 nodes collapsed)
binary_operator
identifier "anal_year"
<- "<-"
function_definition
function "function"
parameters
( "("
parameter
identifier "y"
) ")"
braced_expression
{ "{"
if_statement (+32 nodes collapsed)
binary_operator (+28 nodes collapsed)
binary_operator
identifier "x"
<- "<-"
call
identifier "content"
arguments
( "("
argument
identifier "x"
) ")"
binary_operator
identifier "cal"
<- "<-"
call
identifier "html_element"
arguments
( "("
argument
identifier "x"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "//table//table[count(tr)=4 and count(tr/td)=12]"
string_close "'"
) ")"
binary_operator
identifier "mos"
<- "<-"
call
identifier "html_elements"
arguments
( "("
argument
identifier "cal"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "tr/td//td[count(table)=2]"
string_close "'"
) ")"
comment "## ym_hijri <- html_text(html_element(mos[12L], xpath='table"...
comment "## ym_greg <- html_text(html_element(mos[1L], xpath='table[2"...
binary_operator
identifier "anal_month"
<- "<-"
function_definition
function "function"
parameters
( "("
parameter
identifier "nod"
) ")"
braced_expression
{ "{"
binary_operator
identifier "ym_hijri"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "table[1]//span"
string_close "'"
) ")"
) ")"
binary_operator
identifier "ym_greg"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "table[2]/tr[2]//span"
string_close "'"
) ")"
) ")"
binary_operator
identifier "mon"
<- "<-"
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "table[2]/tr[4]/td/table"
string_close "'"
) ")"
binary_operator
identifier "d_hijri"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_elements"
arguments
( "("
argument
identifier "mon"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "tr/td/table/tr[1]/td/span/text()"
string_close "'"
) ")"
) ")"
binary_operator
identifier "d_greg"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_elements"
arguments
( "("
argument
identifier "mon"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "tr/td/table/tr[2]/td/span/text()"
string_close "'"
) ")"
) ")"
binary_operator
identifier "r"
<- "<-"
call
identifier "data.table"
arguments
( "("
argument
identifier "hd"
= "="
identifier "d_hijri"
comma ","
argument
identifier "hm"
= "="
subset
identifier ".hijri_m"
arguments
[ "["
argument
call
identifier "sub"
arguments
( "("
argument
string
string_open "\""
string_content " [0-9].*"
string_close "\""
comma ","
argument
string
string_open "\""
string_close "\""
comma ","
argument
identifier "ym_hijri"
) ")"
comma ","
argument
identifier "n"
] "]"
comma ","
argument
identifier "hy"
= "="
call
identifier "sub"
arguments
( "("
argument
string
string_open "\""
string_content ".*?([0-9]+).*"
string_close "\""
comma ","
argument
string
string_open "\""
string_content
escape_sequence "\\\\"
string_close "\""
comma ","
argument
identifier "ym_hijri"
) ")"
comma ","
argument
identifier "gd"
= "="
identifier "d_greg"
comma ","
argument (+30 nodes collapsed)
comma ","
argument (+23 nodes collapsed)
) ")"
subset
identifier "r"
arguments
[ "["
argument
binary_operator
identifier "hd"
== "=="
string
string_open "\""
string_content "1"
string_close "\""
] "]"
} "}"
call (+43 nodes collapsed)
} "}"
if_statement
if "if"
( "("
binary_operator
call
identifier "sys.nframe"
arguments
( "("
) ")"
== "=="
integer
L "L"
) ")"
braced_expression
{ "{"
binary_operator
identifier "args"
<- "<-"
call
identifier "commandArgs"
arguments
( "("
argument
identifier "trailingOnly"
= "="
true "TRUE"
) ")"
binary_operator
identifier "outf"
<- "<-"
string
string_open "\""
string_close "\""
if_statement (+55 nodes collapsed)
if_statement (+65 nodes collapsed)
if_statement (+46 nodes collapsed)
binary_operator
identifier "r"
<- "<-"
call
identifier "rbindlist"
arguments
( "("
argument
call
identifier "lapply"
arguments
( "("
argument
identifier "args"
comma ","
argument
identifier "anal_year"
) ")"
) ")"
comment "## as a service calculate the ldn"
subset (+47 nodes collapsed)
binary_operator
identifier "r"
<- "<-"
call
identifier "unique"
arguments
( "("
argument
call
identifier "setkey"
arguments
( "("
argument
identifier "r"
comma ","
argument
identifier "ldn"
) ")"
) ")"
if_statement
if "if"
( "("
unary_operator
! "!"
identifier "as.c"
) ")"
braced_expression (+34 nodes collapsed)
else "else"
braced_expression
{ "{"
binary_operator (+47 nodes collapsed)
call
identifier "sink"
arguments
( "("
argument
identifier "outf"
) ")"
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
escape_sequence "\\n"
string_close "'"
) ")"
call (+34 nodes collapsed)
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
string_close "'"
) ")"
call (+51 nodes collapsed)
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
string_close "'"
) ")"
call
identifier "sink"
arguments
( "("
) ")"
} "}"
} "}"

After

program
comment "#!/home/freundt/usr/bin/Rscript --vanilla"
call
identifier "library"
arguments
( "("
argument
identifier "httr"
) ")"
call
identifier "library"
arguments
( "("
argument
identifier "data.table"
) ")"
call
identifier "library"
arguments
( "("
argument
identifier "rvest"
) ")"
call
identifier "set_config"
arguments
( "("
argument
call
identifier "config"
arguments
( "("
argument
identifier "ssl_verifypeer"
= "="
integer
L "L"
) ")"
) ")"
binary_operator (+28 nodes collapsed)
binary_operator (+28 nodes collapsed)
binary_operator
identifier "anal_year"
<- "<-"
function_definition
function "function"
parameters
( "("
parameter
identifier "y"
) ")"
braced_expression
{ "{"
binary_operator
identifier "hndl"
<- "<-"
call
identifier "handle"
arguments
( "("
argument
string
string_open "'"
string_content "https://www.ummulqura.org.sa"
string_close "'"
) ")"
if_statement (+32 nodes collapsed)
binary_operator (+28 nodes collapsed)
binary_operator
identifier "x"
<- "<-"
call
identifier "content"
arguments
( "("
argument
identifier "x"
) ")"
binary_operator
identifier "cal"
<- "<-"
call
identifier "html_element"
arguments
( "("
argument
identifier "x"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "//table[count(tr)=4 and count(tr/td)=12]"
string_close "'"
) ")"
binary_operator
identifier "y_hijri"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_element"
arguments
( "("
argument
identifier "cal"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "//span[@class=\"current-year\"]/text()"
string_close "'"
) ")"
) ")"
binary_operator
identifier "mos"
<- "<-"
call
identifier "html_elements"
arguments
( "("
argument
identifier "cal"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content ".//td[table[@class=\"calTB_big\"]]"
string_close "'"
) ")"
binary_operator
identifier "anal_month"
<- "<-"
function_definition
function "function"
parameters
( "("
parameter
identifier "nod"
) ")"
braced_expression
{ "{"
binary_operator
identifier "m_hijri"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content ".//div/span[2]"
string_close "'"
) ")"
) ")"
binary_operator
identifier "ym_greg"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content ".//div/span[1]"
string_close "'"
) ")"
) ")"
binary_operator
identifier "mon"
<- "<-"
call
identifier "html_element"
arguments
( "("
argument
identifier "nod"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content ".//table[@class=\"calTB2_big\"]"
string_close "'"
) ")"
binary_operator
identifier "d_hijri"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_elements"
arguments
( "("
argument
identifier "mon"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content ".//td[@class=\"Tb_digit_L\"]/span/text()"
string_close "'"
) ")"
) ")"
binary_operator
identifier "d_greg"
<- "<-"
call
identifier "html_text"
arguments
( "("
argument
call
identifier "html_elements"
arguments
( "("
argument
identifier "mon"
comma ","
argument
identifier "xpath"
= "="
string
string_open "'"
string_content "..//td[@class=\"Tb_digit_S\"]/span/text()"
string_close "'"
) ")"
) ")"
binary_operator
identifier "r"
<- "<-"
call
identifier "data.table"
arguments
( "("
argument
identifier "hd"
= "="
identifier "d_hijri"
comma ","
argument
identifier "hm"
= "="
subset
identifier ".hijri_m"
arguments
[ "["
argument
call
identifier "sub"
arguments
( "("
argument
string
string_open "\""
string_content " [0-9].*"
string_close "\""
comma ","
argument
string
string_open "\""
string_close "\""
comma ","
argument
identifier "m_hijri"
) ")"
comma ","
argument
identifier "n"
] "]"
comma ","
argument
identifier "hy"
= "="
identifier "y_hijri"
comma ","
argument
identifier "gd"
= "="
identifier "d_greg"
comma ","
argument (+30 nodes collapsed)
comma ","
argument (+23 nodes collapsed)
) ")"
subset
identifier "r"
arguments
[ "["
argument
binary_operator
identifier "hd"
== "=="
string
string_open "\""
string_content "1"
string_close "\""
] "]"
} "}"
call (+43 nodes collapsed)
} "}"
if_statement
if "if"
( "("
binary_operator
call
identifier "sys.nframe"
arguments
( "("
) ")"
== "=="
integer
L "L"
) ")"
braced_expression
{ "{"
binary_operator
identifier "args"
<- "<-"
call
identifier "commandArgs"
arguments
( "("
argument
identifier "trailingOnly"
= "="
true "TRUE"
) ")"
binary_operator
identifier "outf"
<- "<-"
string
string_open "\""
string_close "\""
if_statement (+55 nodes collapsed)
if_statement (+65 nodes collapsed)
if_statement (+46 nodes collapsed)
if_statement
if "if"
( "("
unary_operator
! "!"
call
identifier "length"
arguments
( "("
argument
identifier "args"
) ")"
) ")"
braced_expression
{ "{"
call
identifier "stop"
arguments
( "("
argument
string
string_open "\""
string_content "YEAR argument missing. See --help."
string_close "\""
) ")"
} "}"
call
identifier "set_config"
arguments
( "("
argument
call
identifier "config"
arguments
( "("
argument
identifier "ssl_verifypeer"
= "="
integer
L "L"
) ")"
) ")"
binary_operator
identifier "r"
<- "<-"
call
identifier "rbindlist"
arguments
( "("
argument
call
identifier "lapply"
arguments
( "("
argument
identifier "args"
comma ","
argument
identifier "anal_year"
) ")"
) ")"
comment "## as a service calculate the ldn"
subset (+47 nodes collapsed)
binary_operator
identifier "r"
<- "<-"
call
identifier "unique"
arguments
( "("
argument
call
identifier "setkey"
arguments
( "("
argument
identifier "r"
comma ","
argument
identifier "ldn"
) ")"
) ")"
if_statement
if "if"
( "("
unary_operator
! "!"
identifier "as.c"
) ")"
braced_expression (+34 nodes collapsed)
else "else"
braced_expression
{ "{"
binary_operator (+47 nodes collapsed)
if_statement
if "if"
( "("
binary_operator
identifier "outf"
> ">"
string
string_open "\""
string_close "\""
) ")"
call
identifier "sink"
arguments
( "("
argument
identifier "outf"
) ")"
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
escape_sequence "\\n"
string_close "'"
) ")"
call (+34 nodes collapsed)
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
string_close "'"
) ")"
call (+51 nodes collapsed)
call
identifier "cat"
arguments
( "("
argument
string
string_open "'"
string_content
escape_sequence "\\n"
string_close "'"
) ")"
if_statement
if "if"
( "("
binary_operator
identifier "outf"
> ">"
string
string_open "\""
string_close "\""
) ")"
call
identifier "sink"
arguments
( "("
) ")"
} "}"
} "}"