breakout_parser 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,7 +87,9 @@ size_t in_buf_len = 0;
|
|
87
87
|
|
88
88
|
char *buf = NULL, *bufptr = NULL;
|
89
89
|
size_t bufsize = 0;
|
90
|
-
|
90
|
+
|
91
|
+
const char *space_name = NULL;
|
92
|
+
size_t space_name_len = 0;
|
91
93
|
|
92
94
|
#define CHECK_BUF_SIZE(len) \
|
93
95
|
if( (bufptr - buf + len + 1) >= bufsize ){ \
|
@@ -128,7 +130,7 @@ void yyerror(const char *msg)
|
|
128
130
|
|
129
131
|
|
130
132
|
/* Line 189 of yacc.c */
|
131
|
-
#line
|
133
|
+
#line 134 "parser.tab.c"
|
132
134
|
|
133
135
|
/* Enabling traces. */
|
134
136
|
#ifndef YYDEBUG
|
@@ -193,7 +195,7 @@ typedef union YYSTYPE
|
|
193
195
|
{
|
194
196
|
|
195
197
|
/* Line 214 of yacc.c */
|
196
|
-
#line
|
198
|
+
#line 61 "parser.y"
|
197
199
|
|
198
200
|
double dvalue;
|
199
201
|
int ivalue;
|
@@ -202,7 +204,7 @@ typedef union YYSTYPE
|
|
202
204
|
|
203
205
|
|
204
206
|
/* Line 214 of yacc.c */
|
205
|
-
#line
|
207
|
+
#line 208 "parser.tab.c"
|
206
208
|
} YYSTYPE;
|
207
209
|
# define YYSTYPE_IS_TRIVIAL 1
|
208
210
|
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
@@ -214,7 +216,7 @@ typedef union YYSTYPE
|
|
214
216
|
|
215
217
|
|
216
218
|
/* Line 264 of yacc.c */
|
217
|
-
#line
|
219
|
+
#line 220 "parser.tab.c"
|
218
220
|
|
219
221
|
#ifdef short
|
220
222
|
# undef short
|
@@ -515,12 +517,12 @@ static const yytype_int8 yyrhs[] =
|
|
515
517
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
516
518
|
static const yytype_uint8 yyrline[] =
|
517
519
|
{
|
518
|
-
0,
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
520
|
+
0, 82, 82, 83, 86, 87, 88, 89, 90, 91,
|
521
|
+
92, 93, 93, 93, 94, 94, 94, 95, 97, 98,
|
522
|
+
100, 101, 103, 104, 106, 107, 109, 110, 112, 113,
|
523
|
+
114, 115, 116, 117, 118, 119, 121, 122, 123, 124,
|
524
|
+
125, 126, 127, 129, 130, 132, 139, 140, 141, 142,
|
525
|
+
143, 145, 146, 147, 148, 149, 149
|
524
526
|
};
|
525
527
|
#endif
|
526
528
|
|
@@ -1475,273 +1477,273 @@ yyreduce:
|
|
1475
1477
|
case 6:
|
1476
1478
|
|
1477
1479
|
/* Line 1455 of yacc.c */
|
1478
|
-
#line
|
1480
|
+
#line 88 "parser.y"
|
1479
1481
|
{concat("</h1>",5);}
|
1480
1482
|
break;
|
1481
1483
|
|
1482
1484
|
case 7:
|
1483
1485
|
|
1484
1486
|
/* Line 1455 of yacc.c */
|
1485
|
-
#line
|
1487
|
+
#line 89 "parser.y"
|
1486
1488
|
{concat("</h2>",5);}
|
1487
1489
|
break;
|
1488
1490
|
|
1489
1491
|
case 8:
|
1490
1492
|
|
1491
1493
|
/* Line 1455 of yacc.c */
|
1492
|
-
#line
|
1494
|
+
#line 90 "parser.y"
|
1493
1495
|
{concat("</h3>",5);}
|
1494
1496
|
break;
|
1495
1497
|
|
1496
1498
|
case 9:
|
1497
1499
|
|
1498
1500
|
/* Line 1455 of yacc.c */
|
1499
|
-
#line
|
1501
|
+
#line 91 "parser.y"
|
1500
1502
|
{concat("</h4>",5);}
|
1501
1503
|
break;
|
1502
1504
|
|
1503
1505
|
case 10:
|
1504
1506
|
|
1505
1507
|
/* Line 1455 of yacc.c */
|
1506
|
-
#line
|
1508
|
+
#line 92 "parser.y"
|
1507
1509
|
{concat("</h5>",5);}
|
1508
1510
|
break;
|
1509
1511
|
|
1510
1512
|
case 11:
|
1511
1513
|
|
1512
1514
|
/* Line 1455 of yacc.c */
|
1513
|
-
#line
|
1515
|
+
#line 93 "parser.y"
|
1514
1516
|
{concat("<ul>",4);}
|
1515
1517
|
break;
|
1516
1518
|
|
1517
1519
|
case 12:
|
1518
1520
|
|
1519
1521
|
/* Line 1455 of yacc.c */
|
1520
|
-
#line
|
1522
|
+
#line 93 "parser.y"
|
1521
1523
|
{concat("</ul>",5);}
|
1522
1524
|
break;
|
1523
1525
|
|
1524
1526
|
case 14:
|
1525
1527
|
|
1526
1528
|
/* Line 1455 of yacc.c */
|
1527
|
-
#line
|
1529
|
+
#line 94 "parser.y"
|
1528
1530
|
{concat("<ol>",4);}
|
1529
1531
|
break;
|
1530
1532
|
|
1531
1533
|
case 15:
|
1532
1534
|
|
1533
1535
|
/* Line 1455 of yacc.c */
|
1534
|
-
#line
|
1536
|
+
#line 94 "parser.y"
|
1535
1537
|
{concat("</ol>",5);}
|
1536
1538
|
break;
|
1537
1539
|
|
1538
1540
|
case 18:
|
1539
1541
|
|
1540
1542
|
/* Line 1455 of yacc.c */
|
1541
|
-
#line
|
1543
|
+
#line 97 "parser.y"
|
1542
1544
|
{concat("</li>",5);}
|
1543
1545
|
break;
|
1544
1546
|
|
1545
1547
|
case 19:
|
1546
1548
|
|
1547
1549
|
/* Line 1455 of yacc.c */
|
1548
|
-
#line
|
1550
|
+
#line 98 "parser.y"
|
1549
1551
|
{concat("</li>",5);}
|
1550
1552
|
break;
|
1551
1553
|
|
1552
1554
|
case 22:
|
1553
1555
|
|
1554
1556
|
/* Line 1455 of yacc.c */
|
1555
|
-
#line
|
1557
|
+
#line 103 "parser.y"
|
1556
1558
|
{concat("</li>",5);}
|
1557
1559
|
break;
|
1558
1560
|
|
1559
1561
|
case 23:
|
1560
1562
|
|
1561
1563
|
/* Line 1455 of yacc.c */
|
1562
|
-
#line
|
1564
|
+
#line 104 "parser.y"
|
1563
1565
|
{concat("</li>",5);}
|
1564
1566
|
break;
|
1565
1567
|
|
1566
1568
|
case 30:
|
1567
1569
|
|
1568
1570
|
/* Line 1455 of yacc.c */
|
1569
|
-
#line
|
1571
|
+
#line 114 "parser.y"
|
1570
1572
|
{concat2((yyvsp[(1) - (1)].svalue));}
|
1571
1573
|
break;
|
1572
1574
|
|
1573
1575
|
case 31:
|
1574
1576
|
|
1575
1577
|
/* Line 1455 of yacc.c */
|
1576
|
-
#line
|
1578
|
+
#line 115 "parser.y"
|
1577
1579
|
{process_url((yyvsp[(1) - (1)].svalue));}
|
1578
1580
|
break;
|
1579
1581
|
|
1580
1582
|
case 32:
|
1581
1583
|
|
1582
1584
|
/* Line 1455 of yacc.c */
|
1583
|
-
#line
|
1585
|
+
#line 116 "parser.y"
|
1584
1586
|
{(yyvsp[(1) - (1)].ivalue) ? concat(" <strong>",9) : concat("<strong>",8);}
|
1585
1587
|
break;
|
1586
1588
|
|
1587
1589
|
case 33:
|
1588
1590
|
|
1589
1591
|
/* Line 1455 of yacc.c */
|
1590
|
-
#line
|
1592
|
+
#line 117 "parser.y"
|
1591
1593
|
{concat("</strong>",9);}
|
1592
1594
|
break;
|
1593
1595
|
|
1594
1596
|
case 34:
|
1595
1597
|
|
1596
1598
|
/* Line 1455 of yacc.c */
|
1597
|
-
#line
|
1599
|
+
#line 118 "parser.y"
|
1598
1600
|
{(yyvsp[(1) - (1)].ivalue) ? concat(" <em>",5) : concat("<em>",4);}
|
1599
1601
|
break;
|
1600
1602
|
|
1601
1603
|
case 35:
|
1602
1604
|
|
1603
1605
|
/* Line 1455 of yacc.c */
|
1604
|
-
#line
|
1606
|
+
#line 119 "parser.y"
|
1605
1607
|
{concat("</em>",5);}
|
1606
1608
|
break;
|
1607
1609
|
|
1608
1610
|
case 36:
|
1609
1611
|
|
1610
1612
|
/* Line 1455 of yacc.c */
|
1611
|
-
#line
|
1613
|
+
#line 121 "parser.y"
|
1612
1614
|
{process_ticket_link((yyvsp[(1) - (1)].svalue));}
|
1613
1615
|
break;
|
1614
1616
|
|
1615
1617
|
case 37:
|
1616
1618
|
|
1617
1619
|
/* Line 1455 of yacc.c */
|
1618
|
-
#line
|
1620
|
+
#line 122 "parser.y"
|
1619
1621
|
{process_svn_link((yyvsp[(1) - (1)].svalue));}
|
1620
1622
|
break;
|
1621
1623
|
|
1622
1624
|
case 38:
|
1623
1625
|
|
1624
1626
|
/* Line 1455 of yacc.c */
|
1625
|
-
#line
|
1627
|
+
#line 123 "parser.y"
|
1626
1628
|
{process_git_link((yyvsp[(1) - (1)].svalue));}
|
1627
1629
|
break;
|
1628
1630
|
|
1629
1631
|
case 39:
|
1630
1632
|
|
1631
1633
|
/* Line 1455 of yacc.c */
|
1632
|
-
#line
|
1634
|
+
#line 124 "parser.y"
|
1633
1635
|
{process_url_link((yyvsp[(1) - (1)].svalue),NULL);}
|
1634
1636
|
break;
|
1635
1637
|
|
1636
1638
|
case 40:
|
1637
1639
|
|
1638
1640
|
/* Line 1455 of yacc.c */
|
1639
|
-
#line
|
1641
|
+
#line 125 "parser.y"
|
1640
1642
|
{process_url_link((yyvsp[(1) - (1)].svalue),"http://");}
|
1641
1643
|
break;
|
1642
1644
|
|
1643
1645
|
case 41:
|
1644
1646
|
|
1645
1647
|
/* Line 1455 of yacc.c */
|
1646
|
-
#line
|
1648
|
+
#line 126 "parser.y"
|
1647
1649
|
{process_wiki_link((yyvsp[(1) - (1)].svalue));}
|
1648
1650
|
break;
|
1649
1651
|
|
1650
1652
|
case 42:
|
1651
1653
|
|
1652
1654
|
/* Line 1455 of yacc.c */
|
1653
|
-
#line
|
1655
|
+
#line 127 "parser.y"
|
1654
1656
|
{process_anchor_link((yyvsp[(1) - (1)].svalue));}
|
1655
1657
|
break;
|
1656
1658
|
|
1657
1659
|
case 45:
|
1658
1660
|
|
1659
1661
|
/* Line 1455 of yacc.c */
|
1660
|
-
#line
|
1662
|
+
#line 132 "parser.y"
|
1661
1663
|
{concat_escaped_char((yyvsp[(1) - (1)].ivalue));}
|
1662
1664
|
break;
|
1663
1665
|
|
1664
1666
|
case 46:
|
1665
1667
|
|
1666
1668
|
/* Line 1455 of yacc.c */
|
1667
|
-
#line
|
1669
|
+
#line 139 "parser.y"
|
1668
1670
|
{concat("<h1 id=\"",8); process_header((yyvsp[(1) - (1)].svalue));}
|
1669
1671
|
break;
|
1670
1672
|
|
1671
1673
|
case 47:
|
1672
1674
|
|
1673
1675
|
/* Line 1455 of yacc.c */
|
1674
|
-
#line
|
1676
|
+
#line 140 "parser.y"
|
1675
1677
|
{concat("<h2 id=\"",8); process_header((yyvsp[(1) - (1)].svalue));}
|
1676
1678
|
break;
|
1677
1679
|
|
1678
1680
|
case 48:
|
1679
1681
|
|
1680
1682
|
/* Line 1455 of yacc.c */
|
1681
|
-
#line
|
1683
|
+
#line 141 "parser.y"
|
1682
1684
|
{concat("<h3 id=\"",8); process_header((yyvsp[(1) - (1)].svalue));}
|
1683
1685
|
break;
|
1684
1686
|
|
1685
1687
|
case 49:
|
1686
1688
|
|
1687
1689
|
/* Line 1455 of yacc.c */
|
1688
|
-
#line
|
1690
|
+
#line 142 "parser.y"
|
1689
1691
|
{concat("<h4 id=\"",8); process_header((yyvsp[(1) - (1)].svalue));}
|
1690
1692
|
break;
|
1691
1693
|
|
1692
1694
|
case 50:
|
1693
1695
|
|
1694
1696
|
/* Line 1455 of yacc.c */
|
1695
|
-
#line
|
1697
|
+
#line 143 "parser.y"
|
1696
1698
|
{concat("<h5 id=\"",8); process_header((yyvsp[(1) - (1)].svalue));}
|
1697
1699
|
break;
|
1698
1700
|
|
1699
1701
|
case 51:
|
1700
1702
|
|
1701
1703
|
/* Line 1455 of yacc.c */
|
1702
|
-
#line
|
1704
|
+
#line 145 "parser.y"
|
1703
1705
|
{concat("<li>",4);}
|
1704
1706
|
break;
|
1705
1707
|
|
1706
1708
|
case 52:
|
1707
1709
|
|
1708
1710
|
/* Line 1455 of yacc.c */
|
1709
|
-
#line
|
1711
|
+
#line 146 "parser.y"
|
1710
1712
|
{concat("<li>",4);}
|
1711
1713
|
break;
|
1712
1714
|
|
1713
1715
|
case 53:
|
1714
1716
|
|
1715
1717
|
/* Line 1455 of yacc.c */
|
1716
|
-
#line
|
1718
|
+
#line 147 "parser.y"
|
1717
1719
|
{concat("<br />",6);}
|
1718
1720
|
break;
|
1719
1721
|
|
1720
1722
|
case 54:
|
1721
1723
|
|
1722
1724
|
/* Line 1455 of yacc.c */
|
1723
|
-
#line
|
1725
|
+
#line 148 "parser.y"
|
1724
1726
|
{concat("<br /><br />",12);}
|
1725
1727
|
break;
|
1726
1728
|
|
1727
1729
|
case 55:
|
1728
1730
|
|
1729
1731
|
/* Line 1455 of yacc.c */
|
1730
|
-
#line
|
1732
|
+
#line 149 "parser.y"
|
1731
1733
|
{concat("<pre><code>",11);}
|
1732
1734
|
break;
|
1733
1735
|
|
1734
1736
|
case 56:
|
1735
1737
|
|
1736
1738
|
/* Line 1455 of yacc.c */
|
1737
|
-
#line
|
1739
|
+
#line 149 "parser.y"
|
1738
1740
|
{concat("</code></pre>",13);}
|
1739
1741
|
break;
|
1740
1742
|
|
1741
1743
|
|
1742
1744
|
|
1743
1745
|
/* Line 1455 of yacc.c */
|
1744
|
-
#line
|
1746
|
+
#line 1747 "parser.tab.c"
|
1745
1747
|
default: break;
|
1746
1748
|
}
|
1747
1749
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
@@ -1953,7 +1955,7 @@ yyreturn:
|
|
1953
1955
|
|
1954
1956
|
|
1955
1957
|
/* Line 1675 of yacc.c */
|
1956
|
-
#line
|
1958
|
+
#line 153 "parser.y"
|
1957
1959
|
|
1958
1960
|
|
1959
1961
|
concat_hex_char(char c){
|
@@ -2062,7 +2064,7 @@ process_url_link(const char*target,const char* proto){
|
|
2062
2064
|
process_svn_link(const char*target){
|
2063
2065
|
const char *c;
|
2064
2066
|
concat("<a href=\"http://code.assembla.com/",34);
|
2065
|
-
|
2067
|
+
concat(space_name,space_name_len);
|
2066
2068
|
concat("/svn/changesets/",16);
|
2067
2069
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
2068
2070
|
process_link_tail(target,NULL,"revision:");
|
@@ -2071,7 +2073,7 @@ process_svn_link(const char*target){
|
|
2071
2073
|
process_git_link(const char*target){
|
2072
2074
|
const char *c;
|
2073
2075
|
concat("<a href=\"http://code.assembla.com/",34);
|
2074
|
-
|
2076
|
+
concat(space_name,space_name_len);
|
2075
2077
|
concat("/git/changesets/",16);
|
2076
2078
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
2077
2079
|
process_link_tail(target,NULL,"revision:");
|
@@ -2082,7 +2084,7 @@ process_wiki_link(const char*target){
|
|
2082
2084
|
concat("<a class=\"wiki_link\" title=\"",28);
|
2083
2085
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
2084
2086
|
concat("\" href=\"/wiki/show/",19);
|
2085
|
-
|
2087
|
+
concat(space_name,space_name_len);
|
2086
2088
|
concat_raw_char('/');
|
2087
2089
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
2088
2090
|
process_link_tail(target,NULL,NULL);
|
@@ -2092,7 +2094,7 @@ process_ticket_link(const char*ticket_id){
|
|
2092
2094
|
const char *c;
|
2093
2095
|
while(*ticket_id && (*ticket_id < '0' || *ticket_id > '9') ) ticket_id++;
|
2094
2096
|
concat("<a href=\"/spaces/",17);
|
2095
|
-
|
2097
|
+
concat(space_name,space_name_len);
|
2096
2098
|
concat("/tickets/",9);
|
2097
2099
|
for(c=ticket_id; *c && *c>='0' && *c<='9'; c++) concat_raw_char(*c);
|
2098
2100
|
process_link_tail(ticket_id,NULL,"#");
|
@@ -16,7 +16,9 @@ size_t in_buf_len = 0;
|
|
16
16
|
|
17
17
|
char *buf = NULL, *bufptr = NULL;
|
18
18
|
size_t bufsize = 0;
|
19
|
-
|
19
|
+
|
20
|
+
const char *space_name = NULL;
|
21
|
+
size_t space_name_len = 0;
|
20
22
|
|
21
23
|
#define CHECK_BUF_SIZE(len) \
|
22
24
|
if( (bufptr - buf + len + 1) >= bufsize ){ \
|
@@ -256,7 +258,7 @@ process_url_link(const char*target,const char* proto){
|
|
256
258
|
process_svn_link(const char*target){
|
257
259
|
const char *c;
|
258
260
|
concat("<a href=\"http://code.assembla.com/",34);
|
259
|
-
|
261
|
+
concat(space_name,space_name_len);
|
260
262
|
concat("/svn/changesets/",16);
|
261
263
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
262
264
|
process_link_tail(target,NULL,"revision:");
|
@@ -265,7 +267,7 @@ process_svn_link(const char*target){
|
|
265
267
|
process_git_link(const char*target){
|
266
268
|
const char *c;
|
267
269
|
concat("<a href=\"http://code.assembla.com/",34);
|
268
|
-
|
270
|
+
concat(space_name,space_name_len);
|
269
271
|
concat("/git/changesets/",16);
|
270
272
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
271
273
|
process_link_tail(target,NULL,"revision:");
|
@@ -276,7 +278,7 @@ process_wiki_link(const char*target){
|
|
276
278
|
concat("<a class=\"wiki_link\" title=\"",28);
|
277
279
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
278
280
|
concat("\" href=\"/wiki/show/",19);
|
279
|
-
|
281
|
+
concat(space_name,space_name_len);
|
280
282
|
concat_raw_char('/');
|
281
283
|
for(c=target; *c && *c!=']' && *c!='|'; c++) concat_raw_char(*c);
|
282
284
|
process_link_tail(target,NULL,NULL);
|
@@ -286,7 +288,7 @@ process_ticket_link(const char*ticket_id){
|
|
286
288
|
const char *c;
|
287
289
|
while(*ticket_id && (*ticket_id < '0' || *ticket_id > '9') ) ticket_id++;
|
288
290
|
concat("<a href=\"/spaces/",17);
|
289
|
-
|
291
|
+
concat(space_name,space_name_len);
|
290
292
|
concat("/tickets/",9);
|
291
293
|
for(c=ticket_id; *c && *c>='0' && *c<='9'; c++) concat_raw_char(*c);
|
292
294
|
process_link_tail(ticket_id,NULL,"#");
|
@@ -3,20 +3,21 @@
|
|
3
3
|
#include "ruby.h"
|
4
4
|
|
5
5
|
void Init_breakout_parser();
|
6
|
-
VALUE method_parse(VALUE, VALUE);
|
6
|
+
VALUE method_parse(VALUE, VALUE, VALUE);
|
7
7
|
|
8
8
|
VALUE breakout_parser = Qnil;
|
9
9
|
|
10
10
|
void Init_breakout_parser() {
|
11
11
|
breakout_parser = rb_define_class("BreakoutParser",rb_cObject);
|
12
|
-
rb_define_singleton_method(breakout_parser, "parse", method_parse,
|
12
|
+
rb_define_singleton_method(breakout_parser, "parse", method_parse, 2);
|
13
13
|
}
|
14
14
|
|
15
15
|
extern char *buf, *bufptr;
|
16
16
|
extern char *in_buf, *in_pos;
|
17
|
-
extern
|
17
|
+
extern const char *space_name;
|
18
|
+
extern size_t in_buf_len, bufsize, space_name_len;
|
18
19
|
|
19
|
-
VALUE method_parse(VALUE self, VALUE text) {
|
20
|
+
VALUE method_parse(VALUE self, VALUE text, VALUE r_space_name) {
|
20
21
|
VALUE s;
|
21
22
|
char *p = RSTRING(text)->ptr;
|
22
23
|
in_buf_len = RSTRING(text)->len;
|
@@ -27,6 +28,9 @@ VALUE method_parse(VALUE self, VALUE text) {
|
|
27
28
|
in_buf = p;
|
28
29
|
in_pos = in_buf;
|
29
30
|
|
31
|
+
space_name = StringValueCStr(r_space_name);
|
32
|
+
space_name_len = space_name ? strlen(space_name) : 0;
|
33
|
+
|
30
34
|
bufsize = 1 + in_buf_len + in_buf_len/3; // reserve 30% of in_buf size
|
31
35
|
if(bufsize<0x100) bufsize = 0x100;
|
32
36
|
|
data/spec/parser_spec.rb
CHANGED