forked from sergiotarxz/Peertube-dl
Adding support for lstring.
This commit is contained in:
parent
4bfca82bcd
commit
ff2f583c24
6
MANIFEST
6
MANIFEST
@ -6,15 +6,11 @@ bin/peertube-dl-hypnotoad
|
|||||||
bin/peertube-dl-web
|
bin/peertube-dl-web
|
||||||
bin/peertube-dl-web.conf
|
bin/peertube-dl-web.conf
|
||||||
cpanfile
|
cpanfile
|
||||||
include/javascript_builtins.h
|
|
||||||
javascript_builtins.c
|
|
||||||
javascript_interpreter_xs/javascript.xs
|
javascript_interpreter_xs/javascript.xs
|
||||||
javascript_interpreter_xs/Makefile.PL
|
javascript_interpreter_xs/Makefile.PL
|
||||||
lib/auto/Peertube/DL/.exists
|
|
||||||
lib/Peertube/DL.pm
|
lib/Peertube/DL.pm
|
||||||
lib/Peertube/DL/Downloaders.pm
|
lib/Peertube/DL/Downloaders.pm
|
||||||
lib/Peertube/DL/Javascript.pm
|
lib/Peertube/DL/Javascript.pm
|
||||||
lib/Peertube/DL/Javascript.xs
|
|
||||||
lib/Peertube/DL/public/css/index.css
|
lib/Peertube/DL/public/css/index.css
|
||||||
lib/Peertube/DL/public/img/spinner.svg
|
lib/Peertube/DL/public/img/spinner.svg
|
||||||
lib/Peertube/DL/public/index.html
|
lib/Peertube/DL/public/index.html
|
||||||
@ -24,7 +20,7 @@ lib/Peertube/DL/UserAgent.pm
|
|||||||
lib/Peertube/DL/Utils.pm
|
lib/Peertube/DL/Utils.pm
|
||||||
LICENSE
|
LICENSE
|
||||||
Makefile.PL
|
Makefile.PL
|
||||||
MANIFEST This list of files
|
MANIFEST
|
||||||
README.md
|
README.md
|
||||||
src/include/javascript_builtins.h
|
src/include/javascript_builtins.h
|
||||||
src/javascript_builtins.c
|
src/javascript_builtins.c
|
||||||
|
@ -7,13 +7,15 @@ WriteMakefile(
|
|||||||
INST_BIN => './bin',
|
INST_BIN => './bin',
|
||||||
test => { TESTS => 't/*.t' },
|
test => { TESTS => 't/*.t' },
|
||||||
test => { TESTS => 't/*/*.t' },
|
test => { TESTS => 't/*/*.t' },
|
||||||
|
DIR => [ 'src', 'javascript_interpreter_xs/' ],
|
||||||
);
|
);
|
||||||
|
|
||||||
sub MY::postamble {
|
sub MY::postamble {
|
||||||
'
|
'
|
||||||
src: src/Makefile
|
src: src/Makefile
|
||||||
cd src && $(MAKE) $(PASSTHRU)
|
src && $(MAKE) $(PASSTHRU)
|
||||||
javascript_interpreter_xs: javascript_interpreter_xs/Makefile
|
javascript_interpreter_xs: javascript_interpreter_xs/Makefile
|
||||||
cd javascript_interpreter_xs/ && $(MAKE) $(PASSTHRU)
|
cd javascript_interpreter_xs/ && $(MAKE) $(PASSTHRU)
|
||||||
';
|
';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
bin/js-pruebas
Normal file → Executable file
7
bin/js-pruebas
Normal file → Executable file
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env perl
|
#!/usr/bin/env perl
|
||||||
|
#
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
@ -7,13 +8,13 @@ use feature 'say';
|
|||||||
use Peertube::DL::Javascript;
|
use Peertube::DL::Javascript;
|
||||||
|
|
||||||
my $a = Peertube::DL::Javascript::_duk_create_heap_default();
|
my $a = Peertube::DL::Javascript::_duk_create_heap_default();
|
||||||
eval { Peertube::DL::Javascript::_duk_push_lstring( $a, "print(\"hola mundo\\n\");" ); };
|
eval { Peertube::DL::Javascript::_duk_push_lstring( $a, "\"hola mundo\"" ); };
|
||||||
if ($@) {
|
if ($@) {
|
||||||
warn $@;
|
warn $@;
|
||||||
$@ = "";
|
$@ = "";
|
||||||
}
|
}
|
||||||
if ( defined $a ) {
|
if ( defined $a ) {
|
||||||
printf( "0x%0x\n", $a );
|
|
||||||
}
|
|
||||||
Peertube::DL::Javascript::_duk_peval($a);
|
Peertube::DL::Javascript::_duk_peval($a);
|
||||||
|
say Peertube::DL::Javascript::_duk_get_lstring($a, -1);
|
||||||
Peertube::DL::Javascript::_duk_destroy_heap($a);
|
Peertube::DL::Javascript::_duk_destroy_heap($a);
|
||||||
|
}
|
||||||
|
@ -3,9 +3,9 @@ use ExtUtils::MakeMaker;
|
|||||||
WriteMakefile(
|
WriteMakefile(
|
||||||
NAME => 'Peertube::DL::Javascript',
|
NAME => 'Peertube::DL::Javascript',
|
||||||
VERSION => '0.1',
|
VERSION => '0.1',
|
||||||
LIBS => ['-lduktape'],
|
LIBS => ['-lduktape -l../src'],
|
||||||
INC => '-Iduktape -I../src/include',
|
INC => '-Iduktape -I../src/include',
|
||||||
XS => { 'javascript.xs' => 'javascript.o' },
|
XS => { 'javascript.xs' => 'javascript.o' },
|
||||||
OBJECT => 'javascript.o ../src/javascript_builtins.o',
|
OBJECT => '../src/javascript_builtins.o javascript.o',
|
||||||
LDFLAGS => '-Wl-t',
|
LDFLAGS => '-Wl-t',
|
||||||
);
|
);
|
||||||
|
@ -75,3 +75,24 @@ _duk_destroy_heap(SV *)
|
|||||||
croak("Cannot destroy something that is not a context.");
|
croak("Cannot destroy something that is not a context.");
|
||||||
}
|
}
|
||||||
duk_destroy_heap(context);
|
duk_destroy_heap(context);
|
||||||
|
|
||||||
|
SV *
|
||||||
|
_duk_get_lstring(SV *, SV *)
|
||||||
|
CODE:
|
||||||
|
duk_context *context = (duk_context *) SvUV(ST(0));
|
||||||
|
if (!context) {
|
||||||
|
croak("Unable to get lstring from no existing context.");
|
||||||
|
}
|
||||||
|
duk_idx_t idx = SvIV(ST(1));
|
||||||
|
if (!duk_is_string(context, idx)) {
|
||||||
|
croak("Idx is not a string.");
|
||||||
|
}
|
||||||
|
if (duk_is_symbol(context, idx)) {
|
||||||
|
croak("This is a symbol, not a string.");
|
||||||
|
}
|
||||||
|
duk_size_t *lstring_len;
|
||||||
|
const char * lstring = duk_get_lstring(context, idx, lstring_len);
|
||||||
|
RETVAL = newSVpv(lstring, (size_t) lstring_len);
|
||||||
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user