breakout_parser 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- char *space_name = "test_space";
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 132 "parser.tab.c"
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 59 "parser.y"
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 206 "parser.tab.c"
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 218 "parser.tab.c"
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, 80, 80, 81, 84, 85, 86, 87, 88, 89,
519
- 90, 91, 91, 91, 92, 92, 92, 93, 95, 96,
520
- 98, 99, 101, 102, 104, 105, 107, 108, 110, 111,
521
- 112, 113, 114, 115, 116, 117, 119, 120, 121, 122,
522
- 123, 124, 125, 127, 128, 130, 137, 138, 139, 140,
523
- 141, 143, 144, 145, 146, 147, 147
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 86 "parser.y"
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 87 "parser.y"
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 88 "parser.y"
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 89 "parser.y"
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 90 "parser.y"
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 91 "parser.y"
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 91 "parser.y"
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 92 "parser.y"
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 92 "parser.y"
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 95 "parser.y"
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 96 "parser.y"
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 101 "parser.y"
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 102 "parser.y"
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 112 "parser.y"
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 113 "parser.y"
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 114 "parser.y"
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 115 "parser.y"
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 116 "parser.y"
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 117 "parser.y"
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 119 "parser.y"
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 120 "parser.y"
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 121 "parser.y"
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 122 "parser.y"
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 123 "parser.y"
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 124 "parser.y"
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 125 "parser.y"
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 130 "parser.y"
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 137 "parser.y"
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 138 "parser.y"
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 139 "parser.y"
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 140 "parser.y"
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 141 "parser.y"
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 143 "parser.y"
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 144 "parser.y"
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 145 "parser.y"
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 146 "parser.y"
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 147 "parser.y"
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 147 "parser.y"
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 1745 "parser.tab.c"
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 151 "parser.y"
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
- concat2(space_name);
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
- concat2(space_name);
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
- concat2(space_name);
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
- concat2(space_name);
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,"#");
@@ -77,7 +77,7 @@ typedef union YYSTYPE
77
77
  {
78
78
 
79
79
  /* Line 1676 of yacc.c */
80
- #line 59 "parser.y"
80
+ #line 61 "parser.y"
81
81
 
82
82
  double dvalue;
83
83
  int ivalue;
@@ -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
- char *space_name = "test_space";
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
- concat2(space_name);
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
- concat2(space_name);
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
- concat2(space_name);
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
- concat2(space_name);
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, 1);
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 size_t in_buf_len, bufsize;
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
@@ -544,6 +544,6 @@ describe 'BreakoutParser' do
544
544
  end
545
545
 
546
546
  def parse s
547
- BreakoutParser.parse(s).strip
547
+ BreakoutParser.parse(s, "test_space").strip
548
548
  end
549
549
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breakout_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey "Zed" Zaikin