Skip to content

Instantly share code, notes, and snippets.

Hunter Perrin hperrin

Block or report user

Report or block hperrin

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View maybe.js
// Returns true about 50% of the time, false about 50% of the time.
export default const maybe = () => Math.random() < .5;
// This should be closer to .5 the more iterations you run.
export const tester = iterations => {
let yes = 0;
for (let i = 0; i < iterations; i++) maybe() && yes++;
return yes/iterations;
}
@hperrin
hperrin / index.js
Last active May 9, 2018
JavaScript strRepeat. (Ridiculously efficient.)
View index.js
export default function strRepeat (str, repeat) {
let curStr = str, i = 1, result = '';
while (true) {
if (i & repeat) result += curStr;
i *= 2;
if (i >= repeat) break;
curStr += curStr;
}
return result;
}
@hperrin
hperrin / index.js
Created Mar 14, 2018
insertInOrder JavaScript Array method. (Insert item into a sorted array.)
View index.js
Array.prototype.insertInOrder = function(item) {
for (var i = 0; this[i] < item && i < this.length; i++);
this.splice(i, 0, item);
};
View index.html
<html>
<body style="font-size: 16pt;">
<p style="text-align: center;">Email: <a href="mailto:chark1212@gmail.com">chark1212@gmail.com</a></p>
<p style="text-align: center;">Cell: <a href="tel:+18582292679">858-229-2679</a></p>
</body>
</html>
@hperrin
hperrin / bootstrap-spotter.css
Last active May 11, 2017
Spot Bootstrap with ease.
View bootstrap-spotter.css
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
@hperrin
hperrin / README.md
Last active Jun 8, 2017
Radical Mode
View README.md
@hperrin
hperrin / frontend.js
Last active May 10, 2018
Equivalent SQL Query from Frontend
View frontend.js
function titleSeach (title, archived) {
return fetch(
'/api/titlesearch.php?title=' +
encodeURIComponent(title) +
'&archived=' +
encodeURIComponent(JSON.stringify(archived))
).then(res => {
if (!res.ok) return Promise.reject(res);
return res.json()
});
@hperrin
hperrin / nymphquery.js
Last active May 10, 2018
Example Nymph Query from Frontend
View nymphquery.js
try {
const entities = await Nymph.getEntities(
{'class': BlogPost.class},
{'type': '&',
'like': ['title', '%easy%'],
'equal': ['archived', false]
}
);
console.log(entities);
} catch (e) {
@hperrin
hperrin / Slim.php
Last active May 9, 2018
PHP Slim archiving class. Slim is a portable file archive format based on JSON. It can be self extracting in multiple languages.
View Slim.php
<?php
/**
* Slim archiving class.
*
* Slim is a portable file archive format based on JSON. It can be self
* extracting in multiple languages.
*
* @license https://www.apache.org/licenses/LICENSE-2.0
* @author Hunter Perrin <hperrin@gmail.com>
@hperrin
hperrin / Get caret Y position in HTML (WYSIWYG) editor from document origin.
Created Feb 5, 2014
This function will give the Y position of the text cursor (caret) when it is in a contenteditable element. This particular one only works on CKEDITOR.
View Get caret Y position in HTML (WYSIWYG) editor from document origin.
var getCaretYPosition = function(){
var editor = CKEDITOR.instances.editor1, //get your CKEDITOR instance here
sel = editor.getSelection(), // text selection
obj = sel.getStartElement().$, // the element the selected text resides in
range = editor.getSelection().getRanges(), // range of selection
container = range[0].startContainer.$, // get the DOM node of the selected text, probably a textnode
textlen = typeof obj.textContent === "undefined" ? obj.innerText.length : obj.textContent.length, // get the length of the text in the container
offset = range[0].startOffset; // get the offset from the beginning of the text in the container to the caret
if (container.nodeType === 3) { // if the container is a text node
while (container.previousSibling) { // add the length of all the preceding text nodes and elements in the same parent element
You can’t perform that action at this time.