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
- 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