// ==UserScript==
// @name Copy google translation result to camel case and copy it to clipboard
// @description google翻訳結果をキャメルケースに変換してクリップボードにコピー
// @version 2.01
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js
// @include https://translate.google.co.jp/*
// @namespace https://greasyfork.org/users/184902
// @downloadURL https://update.greasyfork.icu/scripts/367731/Copy%20google%20translation%20result%20to%20camel%20case%20and%20copy%20it%20to%20clipboard.user.js
// @updateURL https://update.greasyfork.icu/scripts/367731/Copy%20google%20translation%20result%20to%20camel%20case%20and%20copy%20it%20to%20clipboard.meta.js
// ==/UserScript==
(function ($) {
var active = true;
var $btnDiv = $("
");
var $translationResult = $('#result_box');
$btnDiv.css("background-color",active ? "lightgreen":"transparent").
css("width","14px").
css("height","14px").
css("margin","4px").
css("border","dotted 2px gray").
css("border-radius","10px").
css("float","left");
$("#gt-res-tools-l").append($btnDiv);
$btnDiv.click(function(){
active = !active;
$btnDiv.css("background-color", active ? "lightblue":"transparent");
})
var getResult = function(){
return toCamelcase($translationResult.text())
}
var setClipboard = function(str){
var ta = document.createElement("textarea")
ta.value = str
document.body.appendChild(ta)
ta.select()
document.execCommand("copy")
ta.parentElement.removeChild(ta)
$btnDiv.css("background-color","lightgreen")
}
var toCamelcase = function(str) {
if (!str) return str;
var strs = str.split(/ /),
len = strs.length;
if (len <= 1) return str;
str = strs[0].toLowerCase();
for (var i = 1; i < len; i++) {
str += strs[i].toLowerCase().replace(/^[a-z]/, function(value) {
return value.toUpperCase();
});
}
return str
};
const target = document.getElementById("result_box");
const observer = new MutationObserver((mutations) => {
if(active)setClipboard(getResult());
});
const config = { attributes: true, childList: true, characterData: true };
observer.observe(target, config);
})(jQuery);